从 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 API、ActionEvent#getSource()
returns 对象类型从 EventObject 扩展,因此您不能对这种类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量转换为 JButton 类型——所有常见的 warnings/caveats/provisos 关于转换的危险。
所以改变
e.getSource.setOpaque(true);
至:
((JButton) e.getSource).setOpaque(true);
但我再一次强调,无论何时投射,你最好绝对确保投射是正确的类型。
我有以下代码:
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 API、ActionEvent#getSource()
returns 对象类型从 EventObject 扩展,因此您不能对这种类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量转换为 JButton 类型——所有常见的 warnings/caveats/provisos 关于转换的危险。
所以改变
e.getSource.setOpaque(true);
至:
((JButton) e.getSource).setOpaque(true);
但我再一次强调,无论何时投射,你最好绝对确保投射是正确的类型。