当前位置: 首页 > 面试题库 >

另一个类中的动作侦听器-Java

东方英豪
2023-03-14
问题内容

可能有两堂课,而在一堂课中

arrayButtons[i][j].addActionListener(actionListner);

在另一个

ActionListener actionListner = new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            for (int j = 0; j < arrayButtons.length; j++) {
                for (int i = 0; i < arrayButtons[j].length; i++) {
                    if (arrayButtons[j][i] == e.getSource()) {

                        if ((gameNumber == 2) && (playHand.getNumberOfCards() == 0)) {
                            if (player[j].getCard(i).getSuit() == Suit.HEARTS.toString() && player[j].hasSuitBesideHearts())
                                //second game
                                messageOnTable("xxx");

                            else{
                                arrayButtons[j][i].setVisible(false);
                                test[j].setIcon(player[j].getCard(i).getImage());
                                pnCardNumber[j].setText(Integer.toString(player[j].getCard(i).getNumber()));
                                pnCardName[j].setText(player[j].getCard(i).toString());
                                pnCardSuit[j].setText(player[j].getCard(i).getSuit());

                                playHand.addCard(player[j].getCard(i), j);

                                player[j].removeCard(i);

                            }

                        }

}

//更多原因是因为我需要将按钮(摆动)分离到动作监听器

我该怎么办?

谢谢


问题答案:

不仅可以将这两个部分分开,而且还建议这样做(请参阅MVC模式-非常有关分离屏幕控件(如按钮)和程序逻辑)

我想到的最简单的方法是编写一个实现ActionListener接口的命名类,如下所示:

public class SomeActionListener implements ActionListener{

    private JTextField textField1;
    private JComboBox combo1;
    private JTextField textField2;
    //...

    public SomeActionListener(JTextField textField1, JComboBox combo1, 
                                          JTextField textField2){
        this.textField1=textField1;
        this.combo1=combo1;
        this.textField2=textField2;
        //...
    }

    public void actionPerformed(ActionEvent e) {
        //cmd
    }

}

然后将其添加到您的按钮:

ActionListener actionListener = new SomeActionListener(textField1, combo1, textField2);
someButton.addActionListener(actionListener);


 类似资料:
  • 我正在处理JButton事件。我有一个JPanel类,我们叫Panel1,包含一个公共的JButton,我们叫它Button1。单击此按钮时: 但我有兴趣: 有什么建议吗?

  • 问题内容: 我有两个分别称为“左”和“右”。“左”按钮将矩形对象向左移动,“右”按钮将其向右移动。我在班上有一个充当单击任一按钮时的侦听器。但是,我希望单击每个动作时都会发生不同的动作。如何区分点击的? 问题答案: 将actionCommand设置到每个按钮。 //将动作命令设置到两个按钮上。 更新:

  • 问题内容: 基本上,我要执行的操作是获得一个启动按钮,以启动在另一个类中运行并作用于另一个对象的方法。 我给侦听器的代码: 我的另一堂课的代码: 和 我觉得这不太难,但是我缺少了一块。 问题答案: 在匿名类中引用事物的一种方法是使用关键字: 或者,您可以访问封闭类型的成员(变量或方法):

  • 导入javax.swing.*; class Labels extensions JFrame{ JPanel pnl = new JPanel(); } 如果我想将其用作JApplet怎么办?必须做什么?很难更改吗? JFrame上运行的东西和JApplet上的东西是一样的吗?

  • 下面的代码是项目的动作侦听器。基本上,我有 4 个单选按钮,当我单击一个时,我希望它更改屏幕上的变量。当我运行代码时,它只是将所有值相加。还有其他方法可以做到这一点吗?

  • 我有两节课。 一个扩展canvas并在内部创建一个jframe,将canvas添加到该jframe,并添加另一个keyadapter类以接收键事件。我也有主要的函数来测试代码。当从main运行时,表单将显示并接收关键事件。 现在我创建了另一个扩展jframe并实现keylistener以接收这种形式的事件的类。 在第二个类中完成功能后,我想关闭第二个表单并显示第一个表单。当从第二个类中的键事件函数