我有一些代码用于在单击某些按钮然后ActionListener执行操作时更改程序中的txtArea。
reset.addActionListener(new ButtonsAction());
hint.addActionListener(new ButtonsAction());
solve.addActionListener(new ButtonsAction());
newPuzzle.addActionListener(new ButtonsAction());
public class ButtonsAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {//implements actionPerformed
Object button=e.getSource();
if(button.equals(hint))
{
jtxtar.setText("Hint button clicked!");
}
else if(button.equals(reset))
{
jtxtar.setText("Reset button clicked!");
}
else if(button.equals(solve))
{
jtxtar.setText("Solve button clicked!");
}
else
{
jtxtar.setText("New Puzzle button clicked!");
}
}
}
但是我也有一个JComboBox,当选择其中一个选项时,也应清除该字段,但随后添加一条消息,如“难以改变为......”。
查看JComboBox的工作原理,我相信我需要使用ItemListener而不是ActionListener。然而,看一下教程并没有帮助我从中收集到很多东西。但我确实找到了一些东西,说我需要一个全新的Listener类来实现它。
diffBox.addItemListener(new CBoxAction());
public class CBoxAction implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
if(event.getStateChange() == ItemEvent.SELECTED) {
diffBox.getSelectedItem();
jtxtar.setText();
}
这里的问题是我不知道应该怎么做才能告诉jtxtar明确告诉用户他们改变了这个难度。
答案 0 :(得分:0)
重新审视Oracle的JComboBox演示后,我得到了答案。我将此添加到我的else语句中,将最后一个语句添加为else if,然后添加设置jtxtar的代码以告诉使用它们的难度。不需要另一个类,因为它也使用ActionListener。
else if(button.equals(newPuzzle))
{
jtxtar.setText("New Puzzle button clicked!");
}
else {
JComboBox diffBox = (JComboBox)e.getSource();
String difficulties = (String)diffBox.getSelectedItem();
jtxtar.setText(difficulties);
}
现在当你点击ComboBox并选择一个新的难度时,jtxtar会清除并说出这个难度。