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())
{
}
}
}
我想知道MouseListener
或JPanel
类中是否有方法允许我获取单击按钮的文本。感谢
答案 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,以便在创建每个点击事件时自动添加该方法调用,这是可能的,但我还没有那么先进。