如何打印用户单击按钮的字母,然后禁用该按钮
我使用for循环生成每个字母的按钮
} for (int i = 65; i <= 90; i++) {
btnLetters = new JButton(" " + (char) i);
letterJPanel.add(btnLetters);
letterJPanel.setLayout(new FlowLayout());
btnLetters.addActionListener(this);
}
单击该按钮时,应打印该字母,然后禁用该按钮
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == btnLetters) {
}
}
答案 0 :(得分:1)
if (ae.getSource() == btnLetters) { } }
这部分仅适用于最后创建的按钮,因此我认为它毫无意义。
最好做那样的事情
if (ae.getSource() instance of JButton &&
((JButton ) ae.getSource()).getText().length()==2) {
PRINT(((JButton ) ae.getSource()).getText().substring(1));
((JButton ) ae.getSource()).setEnabled(false);
}
其中PRINT是实际打印(但是你这样做)
答案 1 :(得分:1)
创建一个新类
public class ButtonDisabler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton button = (JButton)e.getSource();
System.out.println(button.getText() + " pressed");
button.setEnabled(false);
}
}
然后将其添加到每个按钮
btnLetters.addActionListener(new ButtonDisabler());
答案 2 :(得分:1)
首先,我会这样做: (比从整数转换更好看)
for(char c = 'A'; c <= 'Z'; c++)
{
button.setText(""+c);
...
}
然后
public void actionPerformed(ActionEvent ae)
{
//assuming you only set the action for the JButtons with letters
JButton button = (JButton) ae.getSource();
String letter = button.getText();
print(letter); //for example System.out.println();
button.setEnabled(false);
}
答案 3 :(得分:0)
使用内部类会更容易
创建按钮时。
JButton button = new JButton("A");
button.addActionListener(new ActionListener(
public void actionPerformed(ActionEvent e){
printMethod(button.getLabel()); //You have to implement this...
this.disable()
});