为什么我的textarea没有更新?

时间:2013-09-18 13:15:10

标签: java swing jtextarea

我在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之前将其打印到控制台。

4 个答案:

答案 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完全填充。