正如标题所示,左侧有一个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中打印?如果有人能看看我在这里缺少什么,我真的很感激。
完整代码:
答案 0 :(得分:5)
它按照您的代码工作。您已全局声明textArea
和JList
,因此这两个实例仅包含您在创建edit
标签时创建的实例的最新实例。因此,如果您看到编辑标签,则textArea
将包含您在方法中设置的文字。
您必须为所有标签保留textArea
和List
的不同实例,然后才会产生所需的行为。
希望这有帮助。