如何在Java中获取按钮的文本?

6 java

class Test extends JPanel implements MouseListener
{
    private JButton b1, b2, b3, b4;

    public Test()
    {
        setLayout (new GridLayout (2, 3));

        b1 = new JButton ("Button 1");
        b2 = new JButton ("Button 2");

        add (b1);
        add (b2);
    }

    public void mousePressed (MouseEvent event)
    {
        if (event.getText() == b1.getText())
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道在类MouseListenerJPanel类中是否有一个方法允许我获取单击按钮的文本.谢谢

Ben*_*min 5

您应该尝试查看ActionListener并实现它。触发这些操作后,每当您单击按钮时,这就是应该的工作方式:

class Test extends JPanel implements ActionListener {
...
   public Test() {
        super();
        ...
        b1 = new JButton("Button 1");
        ...
        add(b1);
        ...
        b1.addActionListener(this);
        ...
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        System.out.println(((JButton) event.getSource()).getText());
        if (event.getSource() == b1) {
            // do sth
        } else if (event.getSource() == b2) {
            // do sth else
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后编写一个main方法,并将一个新的Testpanel 实例添加到中JFrame,看看它是如何工作的。

可以在以下网站上找到教程:http : //docs.oracle.com/javase/tutorial/uiswing/components/button.html


Sea*_*ean 5

查看MouseEvent api 有一个 getSource() 方法,您可以使用该方法返回事件发生的对象。然后检查该对象是否是按钮的实例。如果是,您可以将其转换为按钮类型,然后从那里获取文本。

public void mousePressed (MouseEvent event){
   Object o = event.getSource();
   JButton b = null;
   String buttonText = "";

   if(o instanceof JButton)
     b = (JButton)o;

   if(b != null)
     buttonText = b.getText();

}
Run Code Online (Sandbox Code Playgroud)