JButtons的新手,如何让他们执行一个事件?

时间:2013-12-07 09:58:17

标签: java arrays swing jbutton

基本上,我所拥有的是2个阵列。一个JButton长26个数组,一个String个数组,每个字母都有一个字母,还有一个for循环,用于为字母表中的每个字母创建一个按钮,并将其插入{{1数组:

JButton

我想要做的是为所有按钮创建一个事件。每当按下一个按钮时,它所匹配的任何字母都将被设置为JButton[] buttons = new JButton[26]; String letters[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; for(int i = 0; i < buttons.length; i++){ buttons[i] = new JButton(letters[i]); panel.add(buttons[i]); } 被称为猜测的值。

到目前为止,我知道我需要做这样的事情:

String

我的问题在于我写x的地方。我不知道该放什么。我需要这个才能适用于阵列中的所有26个按钮......

对不起,如果这看起来很明显/简单。我显然是java的新手,我只是不明白x.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ //Insert what I want to happen } }); 的工作方式以及如何做到这一点。

2 个答案:

答案 0 :(得分:2)

定义一个ActionListener,如下所示。

ActionListener aListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent event){             
         //find the actioncommand and do what is required.
    }
};

将此ActionListener与每个按钮相关联。

 for(int i = 0; i < buttons.length; i++){
        buttons[i] = new JButton(letters[i]);
        buttons[i].setActionCommand(letters[i]);
        buttons[i].addActionListener(aListener);
        panel.add(buttons[i]);
 }

答案 1 :(得分:1)

只需测试actionCommand,它是一个String值并将其与字母进行比较,然后执行某些操作。

 x.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e){
        if (e.getActionCommand().equals("A")
            // do something
        else if (e.getActionCommand().equals("B")
            // do soemthing
        ...
        ...
    }
});

我喜欢在这种情况下使用开关。

public void actionPerformed(ActionEvent e){
    String letter = e.getActionCommand();

    switch(letter) {
        case "A" : do something; break;
        case "B" : do something; break;
        case "C" : do something; break;
        ...
        ...
    }    
}