如果单击,如何使用jbutton调用方法

b5lpy0ml  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(261)

我做了getbuttons();方法创建按钮,并减少不必要的行,如果我做每个按钮分开。然后在actionperformed gettext()中使用;所以每当我点击这3个按钮中的一个,它就会给我它的文本(如果我点击按钮1,它就会打印出1)。我现在打算做的是,我想用每个按钮来处理不同的事情,例如,我想用按钮“1”调用getmath()方法;另外两个按钮可以做其他事情,比如调用不同的方法。
我不知道怎么做,所以我来这里寻求帮助。谢谢您。

void getMath() {
        int x = 3;
        int y = 5;
        System.out.println(x + y);
    }

    void getButtons() {
        String[] buttons = { "1", "2", "3" };
        int height = 250;
        int gap = 65;
        for (int i = 0; i < buttons.length; i++) {
            JButton gameButtons = new JButton(buttons[i]);
            gameButtons.setFont(new Font("Times New Roman", Font.BOLD, 19));
            gameButtons.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            gameButtons.setBounds(394, 50 + (height + gap * i), 150, 40);
            gameButtons.setForeground(Color.BLACK);
            gameButtons.setBackground(Color.WHITE);
                        gameButtons.addActionListener(this);
            frame.add(gameButtons);
        }
    }

    public void actionPerformed(ActionEvent e) {
                System.out.println(((JButton) e.getSource()).getText());

    }
lp0sw83n

lp0sw83n1#

现在,所有按钮都使用相同的eventlistener。为了实现每个按钮的不同处理,必须实现不同的actionperformed事件。
因此,我建议您不要在循环中创建按钮,而是单独创建它们。你知道,你会有3个按钮,所以不需要循环。对于lambdas,这大致应该是

gameButton1.addActionListener(e->method1(e));
gameButton2.addActionListener(e->method2(e));
gameButton3.addActionListener(e->method3(e));

有签名吗

void method1(ActionEvent e)

相关问题