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中打印?如果有人能看看我在这里缺少什么,我真的很感激.
完整代码:
它按照您的代码工作.您已声明textArea并JList全局声明,因此这两个只会保存最新的实例,这些实例是您在制作edit选项卡时创建的实例.因此,如果您看到编辑选项卡,您textArea将拥有在方法中设置的文本.
你必须保持的不同实例textArea,并List为您的所有标签,然后只将产生预期的行为.
希望这可以帮助.