我有以下代码:
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 API , ActionEvent#getSource()
返回 Object 类型,因此您无法对该类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量强制转换为 JButton 类型 - 并带有有关强制转换危险的所有常见警告/警告/附带条件。
所以改变
e.getSource.setOpaque(true);
至:
((JButton) e.getSource).setOpaque(true);
但是我再次强调,无论何时进行转换,您最好绝对确保转换的类型正确。
关于java - 从 getSource 更改 JButton 上的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578300/