java - 从 getSource 更改 JButton 上的格式

标签 java swing jpanel jbutton

我有以下代码:

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 继承自 EventObject,根据 the relevant APIActionEvent#getSource() 返回 Object 类型,因此您无法对该类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量强制转换为 JButton 类型 - 并带有有关强制转换危险的所有常见警告/警告/附带条件。

所以改变

e.getSource.setOpaque(true);

至:

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

但是我再次强调,无论何时进行转换,您最好绝对确保转换的类型正确。

关于java - 从 getSource 更改 JButton 上的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578300/

相关文章:

java - 需要一个不满足的 if 语句来转到代码开头

java - gcd 的这种实现是否正确

java - JComponent 不会显示图像

java - 如何更新不断变化的 GUI 而不会因更新而闪烁(图形 g)?

java - 在 Swing 应用程序中仅显示一个选定或请求的 jpanel

java - 在Java中使用Xpath更新Xml标签的值

java - JDOM : cannot find symbol getAttribute()

java - 等待线程在 Java 中完成

java - 使用 Swing 的 BG 图像而不覆盖 paintComponent

java - JPanel 不可见