选择JComboBox选项

时间:2017-08-08 02:12:37

标签: swing awt itemlistener

我有一些代码用于在单击某些按钮然后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明确告诉用户他们改变了这个难度。

1 个答案:

答案 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会清除并说出这个难度。