JTextArea - setText()和append()在Listener方法()中不起作用

时间:2014-02-12 09:58:25

标签: java swing user-interface

正如标题所示,左侧有一个JList,右侧有一个JTextArea。

我在makeTextPanel()方法中为JList设置了我的监听器,如下所示:

listSelectionModel = list.getSelectionModel();
listSelectionModel.addListSelectionListener(this);

在action事件上调用的方法是:

//This method is required by ListSelectionListener.
public void valueChanged(ListSelectionEvent e) {
    System.out.println("HEY");
    textArea.setText(null);
    textArea.setText("1: \n");
    textArea.append("2: \n");
    textArea.append("3: \n");
    textArea.append("4: \n");
    }

事件发生是因为在终端中我可以看到“HEY”但没有任何内容被打印到textarea。如果我在创建textarea之后尝试在makeTextPanel()方法中打印到textarea,那么它将打印出来。怎么了?为什么不在事件方法valueChanged中打印?如果有人能看看我在这里缺少什么,我真的很感激。

完整代码:

1 个答案:

答案 0 :(得分:5)

它按照您的代码工作。您已全局声明textAreaJList,因此这两个实例仅包含您在创建edit标签时创建的实例的最新实例。因此,如果您看到编辑标签,则textArea将包含您在方法中设置的文字。

您必须为所有标签保留textAreaList的不同实例,然后才会产生所需的行为。

希望这有帮助。