如何在Java中获取按钮的文本?
我想知道如何在Java中获取按钮的文本?,java,Java,我想知道MouseListener或JPanel类中是否有一种方法允许我获取单击的按钮的文本。谢谢您应该尝试查看ActionListener并实现它。无论何时单击按钮,都会触发这些操作,这是您应该如何工作的: class Test extends JPanel implements MouseListener { private JButton b1, b2, b3, b4; public Test() { setLayout (new GridLayo
MouseListener
或JPanel
类中是否有一种方法允许我获取单击的按钮的文本。谢谢您应该尝试查看ActionListener并实现它。无论何时单击按钮,都会触发这些操作,这是您应该如何工作的:
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())
{
}
}
}
然后编写一个main方法,将Test
面板的一个新实例添加到JFrame
中,并查看它是如何工作的
教程可在以下网站上找到:
看看api
有一个方法getSource(),可用于返回事件发生的对象。然后检查该对象是否是按钮的实例。如果是,您可以将其转换为按钮类型,然后从中获取文本
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
}
}
}
我就是这样做的。我正在寻找一种方法,将按钮名传递给一个方法,这样我就可以运行一个if(s==Button1){}或者if(s==Button2){…..
范围,大约有12个按钮
捕获一个按钮名对我来说很困难(我只做了一天左右的Java),所以我想出了这个方法来将标签/文本传递给一个方法
该代码可以放在它自己的方法中,这样在设置按钮后,您就可以进入每个单击事件并粘贴
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); }
//*******************************************************
然后将它从那里传递到if/then按钮列表方法
或者您的项目需要什么,而不必实际进入并硬编码到每个单击事件中。我想,如果您正在执行一个特定的项目,将IDE设置为在创建每个单击事件时自动将该方法调用添加到该事件中,这是可能的,但我还没有那么先进。这也让我发疯…答案是:没有用于按钮的.getText()方法…您要使用.getLabel()
名称空间不是很有趣吗?使用
equals
而不是=
来比较字符串。如何获取字符串有什么问题吗?它说getText()不是java.awt.event.MouseEvent中的方法-在MouseEvent中是否有类似的方法返回这样的文本?我不确定是否需要检查b!=null,因为我想null JButton对象不能触发事件。如果我错了,请纠正我。@Benjamin需要f.e.从模型中获取JButton,或者AbstractButton两者兼而有之+1@Benjaminnull-check专门针对不同组件使用的mousePressed的情况。其他组件可以使用此方法作为鼠标事件的控制器。这将由开发人员决定。如果您愿意,也可以将所有内容保留在原始instanceof if语句中。我只是为simplicit编写了它y、 我不完全同意这种逻辑流程。如果您使用If语句检查o
是否不是JButton
的实例,不仅会收紧逻辑,而且会使空检查变得多余,并完全消除b
变量。绝对没有理由使用MouseListener
一个JButton
。你应该编辑你的答案,同时推荐ActionListener
。这个Q&a有近9000个视图。人们阅读了它。@Ryan Edward Dougherty:)答案,如果它是你要找的答案的话。
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); }
//*******************************************************
SendButtonLabel(evt.ToString());