0

我不知道我是否在我的问题中使用了正确的术语,如果听起来有点混乱,请提前抱歉。所以基本上我正在尝试编写一个 Java Swing 程序来创建一个 GUI。有多个组件/对象在整个 GUI 中或多或少是统一的,所以我创建了单独的方法来创建不同的对象和面板,并将它们组合在master面板中,这些面板将传递回frame.

我布置了整个 GUI 的布局和外观,但它几乎没有功能。我的问题是我有动作侦听器需要引用或访问在另一个方法/类中制作并添加到面板并作为面板传回的按钮或对象。例如,

    class makeComponents extends JPanel {
        public makeComponents() { 

        }

        public JToggleButton ToggleButton() {
          // Creates On/Off buttons as switches
            JToggleButton button = new JToggleButton("OFF", false);
            button.addActionListener(new ActionListener() {
                AbstractButton abstractButton = (AbstractButton)e.getSource();
                if (abstractButton.isSelected()) {
                    abstractButton.setText("ON");
                  // Want to add CardLayout card.show() to switch pictures
                }
                else {
                    abstractButton.setText("OFF");
                  // Want to add CardLayout card.show() to switch pictures
                }
            }
            return button;
         }
     }

我在一个单独的leftJPanel 上有一个像上面这样的开/关按钮,然后我在rightJPanel 上的 CardLayout 中有 2 个图像,两个面板在 JPanel 中连接在一起,master并传递回框架。我创建了太多图层,以至于我不知道如何回溯和访问这些图片,因此我可以在另一个面板中翻转 2 个图像的 CardLayout。

我希望我足够清楚,任何帮助将不胜感激。先感谢您!

4

1 回答 1

0

您可以简单地将所有内容合并到一个内部具有私有类的类中,然后您可以访问主类对象,如下所示:

public class Master {

    int x;
    int y;
    Inside1 inside;
    Inside2 in2;
    private class Inside1{
        public Inside1(){
            foo();
        }
        private void foo(){
            x=5; //Master.x <---
        }
    }

    private class Inside2{
        public Inside2(){
            inside = new Inside1(); //<- new object of inside1 form Master 
            bar();
        }

        private  void bar(){
            y=15; //Master.y
        }
    }

    public Master(){
        in2 = new Inside2();
    }


}

如您所见,我可以访问私人课程中大师班的所有私人领域。您可以重写您的类并将它们放入 JFrame 类中,问题就解决了!

于 2013-11-15T09:58:10.723 回答