JButton打印一封信

时间:2012-09-04 07:52:57

标签: 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.addActionListener(this);

    }

单击该按钮时,应打印该字母,然后禁用该按钮

public void actionPerformed(ActionEvent ae) {

    if (ae.getSource() == btnLetters) {

    }
}

4 个答案:

答案 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()
});