gpt4 book ai didi

java - 从 EDT 外部获取 Swing 组件的值

转载 作者:行者123 更新时间:2023-11-30 07:38:37 25 4
gpt4 key购买 nike

我当前的代码如下所示:

final String[] value = new String[1];

SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
value[0] = textArea.getText();
}
});

final 数组的使用似乎有点不合常理。有没有更优雅的解决方案?

我已经做了很多搜索,但我似乎找不到任何东西可以做到这一点,这让我很惊讶。尽管我不断遇到 SwingWorker,但我不确定它是否适合这种情况?

我假设 JTextArea.getText() 不是线程安全的。

谢谢。

最佳答案

所有问题都可以通过添加另一层间接来解决(除非你有太多层 :P)。

public class TextSaver implements Runnable
{
private final JTextArea textArea;
private final ObjectToSaveText saveHere;

public TextSaver(JTextArea textArea, ObjectToSaveText saveHere)
{
this.textArea = textArea;
this.saveHere = saveHere;
}

@Override
public void run()
{
saveHere.save(textArea.getText());
}
}

我不会提供 ObjectToSaveText 的代码,但您明白了。然后您的 SwingUtilties 调用就变成了:

SwingUtilities.invokeAndWait(new TextSaver(textArea, saveHere));

您可以从 saveHere 对象中检索保存的文本。

关于java - 从 EDT 外部获取 Swing 组件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com