这是一个非常简单的代码,当我点击一个按钮时,按钮上的文字变为" ..."这是一个名为move
的字符串变量。
我想弄清楚的是,是否可以检查if (e.getSource()==)
命令中按钮的文本。
JButton [] button;
String move="...";
button =new JButton[25];
for (int a=0;a<25;a++)
{
button[a]=new JButton();
p1.add(button[a]);
button[a].addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
for (int a=0; a<25;a++)
{
if (e.getSource()==button[a])
{
button[a].setText(move);
}
}
}
所以在上面的代码之后,一个按钮将有文字&#34; ...&#34;在上面。现在我想要的下一个if (e.getSource()==)
命令是:如果我点击的按钮有文本(move
),请运行代码。
我尝试了数百个随机代码,看看它们是否有效但没有运气:
有点像这样:
if (e.getSource()==button[a].text(move))
OR
if (e.getSource()==button[a].getText.equals(move))
if (The button i click has the text (move) it will run this code)
{
button[a].setBackground(Color.GREEN);
}
我对编程很新,我需要这个用于我的Checkers游戏。 是否有可能做我要求的事情?
答案 0 :(得分:1)
Java中的字符串比较应该使用.equals()而不是==。
答案 1 :(得分:0)
您根据按钮文本检查来源的示例并没有多大意义。您在按钮上添加了一个动作侦听器,而不是该按钮的一个字段。此外,getSource
会返回Object
,因此如果您需要获取其任何成员值,则需要将其转换为应该的类型。在您的情况下,您返回Object
实际类型JButton
。
JButton button = new JButton("Hello");
button.addActionListener((e) -> System.out.println(
e.getSource() instanceof JButton
));
button.doClick();
真
所以,给定一个按钮,你可以得到如下文字:
JButton button = new JButton("Hello");
button.addActionListener((e) -> System.out.println(
((JButton)e.getSource()).getText()
));
button.doClick();
您好
所以,检查move
反对就是这样:
String move = "Howdy";
JButton button = new JButton("Hello");
button.addActionListener((e) -> System.out.println(
((JButton) e.getSource()).getText().equals(move)
));
button.doClick();
假
另一件需要注意的事情是,当你通过getSource
获得一个按钮实例时,你不需要在使用之前在数组中找到该实例;它通过动作监听器返回给你。例如,运行以下代码:
JButton[] buttons = new JButton[10];
Random r = new Random(System.currentTimeMillis());
String newText = "New";
for (int i = 0; i < buttons.length; ++i) {
buttons[i] = new JButton(String.valueOf(r.nextInt()));
buttons[i].addActionListener((e) -> ((JButton)e.getSource()).setText(newText + " " + r.nextInt()));
}
Arrays.stream(buttons).forEach(b -> {
System.out.println(b.getText());
b.doClick();
System.out.println(b.getText());
});
答案 2 :(得分:0)
也许你的意思是这样的:
if (e.getSource() == button[a]) {
if (button[a].getText().equals(move)) {
// do some logic here
button[a].setBackground(Color.GREEN);
}
}