基本上是一个具有几个整数的对象。我希望int在按下它们各自的按钮时发生变化。例如,如果您按下JButton 2,则第二个int应该根据actionPerformed方法中if语句中的方法进行更改。不知道我做错了什么,但是按钮现在绝对不起作用。

public class Object {

    public int someInt;
    //public int someOtherInt;
    //etc. I have a few different ints that I do the same thing with throughout the code, each JButton changes a different int

    public Object() {

        this.someInt = someInt;

        JFrame frame = new JFrame();
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(3);
        frame.setSize(325, 180);
        frame.setVisible(true);
        frame.setTitle("Title");

        //String message = blah blah
        JLabel confirmMessage = new JLabel(message);
        JButton button1 = new JButton("1");
        JButton button2 = new JButton("2");
        JButton button3 = new JButton("3");

        //creating action listener and adding it to buttons and adding buttons to frame

    }

    public class listen implements ActionListener {

        private int someInt;
        private int someOtherInt;

        public listen(int someInt, int someOtherInt) {

            this.someInt = someInt;
            this.someOtherInt = someOtherInt;
        }

        public void actionPerformed() {
            if (aE.getSource() == button1) {
                //change someInt
            }
            //same thing for other buttons
        }
    }
}

最佳答案

定义动作命令并将其设置为所有按钮。然后在actionPerformed中使用它们来确定单击了哪个按钮。

public class Object {

    private static final String FIRST_ACTION = "firstAction";
    private static final String SECOND_ACTION = "firstAction";


    public Object() {

        JButton button1 = new JButton("1");
        button1.setActionCommand(FIRST_ACTION);

        JButton button2 = new JButton("2");
        button2.setActionCommand(SECOND_ACTION);

        JButton button3 = new JButton("3");

        // creating action listener and adding it to buttons and adding buttons
        // to frame

    }

    public class listen implements ActionListener {

        //some code

        public void actionPerformed(ActionEvent aE) {
            if (aE.getActionCommand().equals(FIRST_ACTION)) {
                // change someInt
            } else if (aE.getActionCommand().equals(SECOND_ACTION)) {

            }
            // same thing for other buttons
        }
    }
}

关于java - 如何在ActionListener中将.getSource()与多个JButton一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36208276/

10-12 12:44
查看更多