java - 更新 Textarea 中的实例变量 (Java)

标签 java swing

我正在尝试创建一个代码,该代码将每三秒更新并添加一个实例变量 1。这是我当前的代码

计时器:

 public rityta() {
        initComponents();
            //Timer
        time = new Timer(1000, null);
        time.addActionListener(this);
        time.start();
    }


public void actionPerformed(ActionEvent ae) {
    Object o = ae.getSource();
     if (o == time) {
        tid++;
        if (tid % 3 == 0) { //Every three seconds
            for (int i = 0; i < djur.size(); i++) {              //Wont start until something's been added to tha ArrayList named "djur"
                djur.get(i).setValue(djur.get(i).getValue()+1);  //Get the instance variable and adds one
                System.out.println(djur.get(i).getValue());      //Just a proof of concept that it works, the output window updated every three seconds and adds 1
                jTextArea2.update(jTextArea2.getGraphics());     // Is this needed?
            }

        }
    }
}

问题 现在,由于输出每三秒更新一次,使用我的类中的新实例变量,因此显示实例变量的 Textarea 也应该更新,对吗?但它不会。那么如何在我的 Textarea 中更新新的实例变量呢?

由于我的 TextArea 还包含 ArrayList 的 ToString,因此 TextArea 看起来像这样:

Name: aaa    Value: 10
Name: bbb    Value: 10

我只想将实例变量 10 更新为每三秒加 1。 :)

最佳答案

您不应该期望 JTextArea 自动更新,因为您从未对其调用 setText(...)append(...) ,并且仅仅因为变量已更改,发生这种情况时,其在 JTextArea 中的字符串表示形式不会自动更改。要更新 JTextArea,必须在其上调用这些方法(setText 或追加),或者必须修改 JTextArea 的文档(但要小心)。

至于这个:jTextArea2.update(jTextArea2.getGraphics());您永远不需要这样做,也不应该这样做。

顺便说一句#1,我想知道您是否真的想使用 JList 或 JTable 而不是 JTextArea,但如果不了解您的问题空间和代码的详细信息,我无法确定。

旁注#2:请考虑更改您的用户名。你和我们所有人一样,生来无知,但希望你不愚蠢,因为前者可以通过勤奋努力提高,而后者则不能。

<小时/>

关于:

Since my TextArea also contains the ToString of my ArrayList, the TextArea looks something like this:

Name: aaa    Value: 10
Name: bbb    Value: 10

And I just want to update the instance variable of 10 to add 1 every three seconds. :)

您似乎正在显示可变表格数据,即经常更改的数据,因此在这种情况下,我认为您最好使用专为这种情况构建的工具,一个 JTable。如果您这样做,那么您只需在更新引用数据时更改 JTable 模型中的相关单元格数据,并且由于您将连接模型以在其更改时通知其 View (JTable 本身),因此您的数据显示会自动更新。

关于java - 更新 Textarea 中的实例变量 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168511/

相关文章:

Java 方法仅在使用 JavaFX 的调度程序可运行关闭后运行一次完整代码

java - 哪种类型的 Spring 集成 channel ?

java - system.out.println 输出在 Oracle Java 类中的什么位置?

java - 将使用 JPanel 扩展的类添加到现有 JPanel

java - 不同 JFrame 之间的信息交换

java - 如何在 Openstreetmap 中突出显示 MapMarkerDot?

java - `WindowListener` 装模作样,永久开火

java.awt.EventQueue.invokeLater 解释

java - 如何使用jade向远程主机上的另一个代理发送消息?

java - Android 应用程序内部数据存储