Java 打印一封信的按钮

Java 打印一封信的按钮,java,swing,jframe,jbutton,actionlistener,Java,Swing,Jframe,Jbutton,Actionlistener,如何打印用户单击的按钮的字母,然后禁用该按钮 我使用for循环生成每个字母的按钮 } for (int i = 65; i <= 90; i++) { btnLetters = new JButton(" " + (char) i); letterJPanel.add(btnLetters); letterJPanel.setLayout(new FlowLayout()); btnLetters.addActionLi

如何打印用户单击的按钮的字母,然后禁用该按钮

我使用for循环生成每个字母的按钮

   } for (int i = 65; i <= 90; i++) {
        btnLetters = new JButton(" " + (char) i);
        letterJPanel.add(btnLetters);
        letterJPanel.setLayout(new FlowLayout());
        btnLetters.addActionListener(this);

    }

这部分只适用于创建的最后一个按钮,因此我认为它是无意义的。< /P> 最好做那样的事

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是实际的打印(不管您怎么做)

也许使用内部类会更容易

创建按钮时

JButton button = new JButton("A");
button.addActionListener(new ActionListener(
    public void actionPerformed(ActionEvent e){
      printMethod(button.getLabel()); //You have to implement this...
      this.disable()
});
创建一个新类

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

首先,我会这样做: (看起来比从整数中转换要好得多)


mKorbel编辑了我的答案,他删除了“this.disable()”line@Juan安东尼奥·戈麦斯·莫里亚诺(Antonio Gomez Moriano)反对否决投票,方法
disable
不是
官方JButtons API的一部分
@mKorbel我刚刚检查过,该方法已经存在,尽管已经弃用(从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());
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);
}