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

时间:2012-01-27 05:00:22

标签: 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())
        {
        }
    }
}

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

4 个答案:

答案 0 :(得分:4)

您应该尝试查看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
        }
    }
}

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

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

答案 1 :(得分:4)

看看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();

}

答案 2 :(得分:1)

这让我疯狂......这里的答案是:按钮没有.getText()方法......你想使用.getLabel() Aren的命名空间很有趣吗?

答案 3 :(得分:0)

import java.util.Arrays;

import java.util.List;

private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {

//********************************************************

        String Hunt1 = evt.toString();
        Hunt1 = Hunt1.replaceAll("=", ",");
        Hunt1 = Hunt1.replaceAll("]", ",");
        String [] Hunt2 = Hunt1.split(",");
        List Hunt3 = Arrays.asList(Hunt2);
        String ButtonText = Hunt3.get(2).toString();
        System.out.println(ButtonText); }

//*******************************************************

这就是我做的。我正在寻找一种方法将按钮名称传递给方法,以便我可以运行大约12个按钮的if(s==Button1){}else if(s==Button2){.....范围。

抓住一个按钮名称对我来说很难(我只用了一天左右的Java)所以我想出了这个将标签/文本传递给方法。

该代码可以放在自己的方法中,这样在您设置按钮后,您可以进入每个点击事件并粘贴

SendButtonLabel(evt.ToString()); 

然后从那里传递给你的if / then按钮列表方法

或您的项目需要的任何内容,而无需实际进入每个点击事件并对其进行硬编码。我想如果你正在做一个特定的项目来设置你的IDE,以便在创建每个点击事件时自动添加该方法调用,这是可能的,但我还没有那么先进。