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

use*_*819 3 java user-interface swing

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

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

listSelectionModel = list.getSelectionModel();
listSelectionModel.addListSelectionListener(this);
Run Code Online (Sandbox Code Playgroud)

在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");
    }
Run Code Online (Sandbox Code Playgroud)

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

完整代码:

San*_*eev 5

它按照您的代码工作.您已声明textAreaJList全局声明,因此这两个只会保存最新的实例,这些实例是您在制作edit选项卡时创建的实例.因此,如果您看到编辑选项卡,您textArea将拥有在方法中设置的文本.

你必须保持的不同实例textArea,并List为您的所有标签,然后只将产生预期的行为.

希望这可以帮助.