如何使用来自另一个类的 ActionListener 更改 JPanel 颜色?

英国1992

我在使用 ActionListener 为不同类中的单选按钮更改我的一个类中的 Jpanel (mainPanel) 颜色时遇到问题。我将 mainPanel 的默认颜色设置为黑色。

基本上我的第一堂课有一个 setMainPanel 方法:

public class MainBoard extends JFrame{

    public void setMainPanel(Color c){
        mainPanel.setBackground(c);
    }
}

在我的第二堂课中,我的动作侦听器为:

private class MenuHandler implements ActionListener{
    public void actionPerformed(ActionEvent e){
        if(e.getSource() == exit) {
            System.exit(0);
        }else if(e.getSource() == blueBackground) {
            MainBoard mb = new MainBoard();
            mb.setMainPanel(Color.BLUE);
        }
    }
}

如果我单击菜单中的“退出”,我的 System.exit 命令将起作用。我试图实现的概念是拥有一个带有单选按钮的“更改颜色”菜单,用户可以在其中更改为黑色或蓝色。我知道这可能有点矫枉过正,但我​​们正在尝试学习如何对来自不同类的组件进行更改。感谢您的任何帮助!

充满鳗鱼的气垫船

不好:

MainBoard mb = new MainBoard();  // this is not the currently displayed MainBoard
mb.setMainPanel(Color.BLUE);

这代表了一个常见的 Java 新手的神奇思维错误,你认为改变一个类的对象的状态会神奇地改变同一个类的不同对象的状态,但这不是 Java 的工作方式。您需要setMainPanel(...)在对当前显示或活动的 MainBoard 实例的引用上调用该方法,而不是在此方法中创建的一些随机的、完全不同的、从未显示的 MainBoard 对象。

因此,将适当的引用传递给侦听器,可能使用以下内容:

private class MenuHandler implements ActionListener {
    MainBoard mainBoard;

    MenuHandler(MainBoard mainBoard) {
        this.mainBoard = mainBoard;
    }

    public void actionPerformed(ActionEvent e){
        if(e.getSource() == exit) {
            System.exit(0);
        }else if(e.getSource() == blueBackground) {
            // MainBoard mb = new MainBoard();
            mainBoard.setMainPanel(Color.BLUE);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改ProgressBar颜色?

来自分类Dev

使用来自另一个对象(线程)的数据重新绘制JPanel

来自分类Dev

如何更改div颜色?

来自分类Dev

如何更改箭头的颜色

来自分类Dev

如何使用actionListener打开另一个类中的Jframe作为构造函数?

来自分类Dev

更改一个标签的颜色也会更改neo4j中另一个标签的颜色

来自分类Dev

如何从另一个更改viewController的颜色(或主题)?

来自分类Dev

如何快速从一个屏幕更改另一个屏幕的颜色?

来自分类Dev

在JPanel Java中更改形状列表的颜色

来自分类Dev

如何从另一个ComboBox(C#,Winforms)更改形状的颜色

来自分类Dev

如何更改TabWidget颜色?

来自分类Dev

在JS的另一个函数中使用函数根据布尔值更改颜色

来自分类Dev

使用来自另一个对象(线程)的数据重新绘制JPanel

来自分类Dev

从另一个JPanel更改一个变量的值时,更新JPanel的标签

来自分类Dev

更改位于GridBagLayout中的JPanel的颜色/其他值

来自分类Dev

将JPanel更改为JFrame上的另一个。如何?

来自分类Dev

单击另一个按钮后如何更改按钮颜色

来自分类Dev

如何更改包含JRadioButton的jPanel的背景颜色?

来自分类Dev

如何更改JPanel的边框(内部)颜色?

来自分类Dev

如何从Jpanel更改Jpanel的Jframe cardlayout中的“ card”,它属于card并放置在另一个类中?

来自分类Dev

使用ActionListener更改字体大小

来自分类Dev

将颜色颜色更改为另一个 javascript no canvas

来自分类Dev

JPanel - 更改 JPanel 的背景颜色时出错

来自分类Dev

当您仅使用 css 单击另一个 div 时,如何使 div 更改颜色?

来自分类Dev

如何从另一个类更改 JPanel 的颜色。爪哇

来自分类Dev

将 jPanel 背景颜色更改为 RGB 值

来自分类Dev

根据来自另一个单元格(多行)的数值更改 x 个单元格的颜色

来自分类Dev

如何从另一个 ViewController 更改标签颜色?迅速

来自分类Dev

如何在悬停另一个元素时更改一个元素的颜色?

Related 相关文章

  1. 1

    如何更改ProgressBar颜色?

  2. 2

    使用来自另一个对象(线程)的数据重新绘制JPanel

  3. 3

    如何更改div颜色?

  4. 4

    如何更改箭头的颜色

  5. 5

    如何使用actionListener打开另一个类中的Jframe作为构造函数?

  6. 6

    更改一个标签的颜色也会更改neo4j中另一个标签的颜色

  7. 7

    如何从另一个更改viewController的颜色(或主题)?

  8. 8

    如何快速从一个屏幕更改另一个屏幕的颜色?

  9. 9

    在JPanel Java中更改形状列表的颜色

  10. 10

    如何从另一个ComboBox(C#,Winforms)更改形状的颜色

  11. 11

    如何更改TabWidget颜色?

  12. 12

    在JS的另一个函数中使用函数根据布尔值更改颜色

  13. 13

    使用来自另一个对象(线程)的数据重新绘制JPanel

  14. 14

    从另一个JPanel更改一个变量的值时,更新JPanel的标签

  15. 15

    更改位于GridBagLayout中的JPanel的颜色/其他值

  16. 16

    将JPanel更改为JFrame上的另一个。如何?

  17. 17

    单击另一个按钮后如何更改按钮颜色

  18. 18

    如何更改包含JRadioButton的jPanel的背景颜色?

  19. 19

    如何更改JPanel的边框(内部)颜色?

  20. 20

    如何从Jpanel更改Jpanel的Jframe cardlayout中的“ card”,它属于card并放置在另一个类中?

  21. 21

    使用ActionListener更改字体大小

  22. 22

    将颜色颜色更改为另一个 javascript no canvas

  23. 23

    JPanel - 更改 JPanel 的背景颜色时出错

  24. 24

    当您仅使用 css 单击另一个 div 时,如何使 div 更改颜色?

  25. 25

    如何从另一个类更改 JPanel 的颜色。爪哇

  26. 26

    将 jPanel 背景颜色更改为 RGB 值

  27. 27

    根据来自另一个单元格(多行)的数值更改 x 个单元格的颜色

  28. 28

    如何从另一个 ViewController 更改标签颜色?迅速

  29. 29

    如何在悬停另一个元素时更改一个元素的颜色?

热门标签

归档