我想做一个事件,在我选择JComboBox后触发。 我现在面临的问题是,当我添加一个ActionListener时,它被触发时,用户点击框,但在他实际上选择了新项目之前,因此动作侦听器始终激活前一个值是在框中选中。我想要做的只是根据选择改变JTextArea的标题。 我试图做这样的事情:我如何使一个JComboBox事件触发后选择?
jBox.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String alt = GetAlgoAreaTitleByChoice();
panel.remove(jArea);
currentBest = setArea("",alt);
currentBest.setBounds(50, 350, 1000, 290);
panel.add(jArea);
}
});
和里面的方法:
private String GetArgsAreaTitleByChoice(){
String chi = jBox.getSelectedItem().toString();
if(chi.equals(generalChoice)){
return "Hello";
}
else if(chi.equals(algoChoice)){
return "World";
}
else if(chi.equals(argsChoice)){
return "Hello";
}
return null;
}
我已经使用所选的事件试过现在这个样子:
public void itemStateChanged(ItemEvent e) {
JComboBox cb = (JComboBox)e.getSource();
// Get the affected item
String item = cb.getSelectedItem().toString();
if (e.getStateChange() == ItemEvent.SELECTED) {
panel.remove(jBox);
textArea = setArea("", item);
panel.add(jBox);
}
,但它似乎将面板从面板上移除而不加回来...为什么会发生这种情况?
请学习java的命名约定并坚持使用它们 – kleopatra 2012-01-30 11:16:40
@Yonatan Nir看到我的编辑 – mKorbel 2012-01-30 11:25:14
a)无法重现您描述的行为方式b)看起来没有加回来的是自我感觉疼痛(通过不使用一个布局管理器)无论如何,为什么_do_你删除并重新添加...只是改变textArea的状态,并开心 – kleopatra 2012-01-30 11:27:19