我在SO上看过类似的帖子,但无论我做什么,jTextArea
都不会更新。
如果我尝试这样的话:
for (int i = 0; i < a.getB().getC().size(); i++) {
jTextArea1.append(a.getB().getC(i).toString());
jTextArea1.update(jTextArea1.getGraphics());
}
我看到有人使用getGraphics
来解决此问题,但在我的情况下无效。
如何确保jTextArea
已更新?
我确保字符串中有一个值,因为我在尝试将其附加到textarea之前将其打印到控制台。
答案 0 :(得分:3)
好吧,你绝对不应该用textarea的图形调用update。检查this以了解update / getGraphics。
选中此解决方案:JTextArea's append () method doesn't seem to work
如果它没有帮助,请尝试调试,也许你附加一个空字符串或类似的东西。
答案 1 :(得分:2)
应在EDT.
中更新Swing组件for (int i = 0; i < a.getB().getC().size(); i++) {
final int value = i;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jTextArea1.append(a.getB().getC(value).toString());
}
});
}
答案 2 :(得分:1)
jTextArea.append
应该有效。也许Swing Thread中的一些GUI动作阻止了对文本区域的更新?
答案 3 :(得分:1)
显然问题是我创建了2个GUI实例,其中一个不可见,所以它总是存在于我能看到的GUI后面,从而隐藏了真正的问题。
当我发现问题很容易解决时。在我创建其他gui的parentGUI中,我现在给这些新GUI一个parentGUI的实例。参见:
private void dropdownActionPerformed(java.awt.event.ActionEvent evt) {
if (dropdown.getSelectedIndex() == 1) {
NewFrame newFrame = new NewFrame(this); //the keyword this did the trick
newFrame.setVisible(true);
}
}
然后在NewFrame的构造函数中,我捕获了parentGUI的实例:
public class NewFrame extends javax.swing.JFrame {
private GUI parentgui;
public NewFrame(GUI parentGUI) {
initComponents();
parentgui = parentGUI;
}
现在问题解决了:)我只有一个parentGUI实例,jTextArea完全填充。