【问题标题】:Change format on JButton from getSource从 getSource 更改 JButton 的格式
【发布时间】:2018-09-30 13:26:52
【问题描述】:

我有以下代码:

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);

【问题讨论】:

    标签: java swing jpanel jbutton


    【解决方案1】:

    ActionEvent 扩展自 EventObject,the relevant APIActionEvent#getSource() 返回 Object 类型,因此您不能对这种类型的变量进行 JButton 方法调用。要执行您想要的操作,您必须将变量转换为 JButton 类型 - 并附上关于转换危险的所有常见警告/警告/附带条件。

    所以改变

    e.getSource.setOpaque(true);
    

    到:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2017-07-22
      相关资源
      最近更新 更多