从 getSource 更改 JButton 的格式

Change format on JButton from getSource

我有以下代码:

public class LetterListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        System.out.println(e.getActionCommand());
        e.getSource();
    }
}

我希望能够设置按钮按下后的不透明度,即你点击一个字母,它就会变成不透明。我想不出如何实现这个。理想情况下我可以使用 e.getSource.setOpaque(true) 但这似乎不是一个选项。我也是 Swing 新手。

我这样初始化我的 JPanel,所以每个按钮都没有存储在变量中。

JPanel letters = new JPanel(new GridLayout(4,3));
for (String letter:letterArr){
    JButton button =new JButton(letter);
    LetterListener letterListener=new LetterListener();
    button.addActionListener(letterListener);
    button.setOpaque(false);
    letters.add(button);

ActionEvent 根据 the relevant APIActionEvent#getSource() returns 对象类型从 EventObject 扩展,因此您不能对这种类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量转换为 JButton 类型——所有常见的 warnings/caveats/provisos 关于转换的危险。

所以改变

e.getSource.setOpaque(true);

至:

((JButton) e.getSource).setOpaque(true);

但我再一次强调,无论何时投射,你最好绝对确保投射是正确的类型。