2

嗨,我基本上有两个类,一个是主要的,一个是用来分隔面板的,只是为了代码的可读性。

我有 :

public class Main{

   public static void main (String args[]) {
    JFrame mainJFrame;
    mainJFrame = new JFrame();

    //some other code here

    CenterPanel centerPanel = new CenterPanel();
    centerPanel.renderPanel();
    mainFrame.add(centerPanel.getGUI());

   }


}

class CenterPanel{
    JPanel center = new JPanel();

    public void renderPanel(){
        JButton enterButton = new JButton("enter");
        JButton exitButton = new JButton("exit");
        center.add(exitButton);
        center.add(enterButton);
    }

    public JComponent getGUI(){
        return center;
    }
}

上面的代码完美运行。它呈现包含进入和退出按钮的 centerPanel。我的问题是:

我仍然需要操作主要的按钮,比如改变颜色,添加一些动作监听器等等。但是我不能再主要地访问它们,因为从技术上讲它们来自不同的类,因此主要来说,centerPanel 是另一个对象。

如何访问按钮并使用它(集合、动作侦听器等)?即使他们来自另一个班级,我仍然希望在主班内使用它?非常感谢!

4

2 回答 2

3

使按钮成员CenterPanel

class CenterPanel{
    JPanel center = new JPanel();

    JButton enterButton;
    JButton exitButton;

    public void renderPanel(){
        enterButton = new JButton("enter");
        exitButton = new JButton("exit");
        center.add(exitButton);
        center.add(enterButton);
    }

    public JButton getEnterButton()
    {
       return enterButton;
    }

    public JButton getExitButton()
    {
       return exitButton;
    }

    public JComponent getGUI(){
        return center;
    }
}
于 2013-10-13T13:14:16.283 回答
1

您在 main 方法中引用了 centerPanel。调用后centerPanel.renderPanel(); ,按钮将添加到JPanelCenterPanel 实例中类型的“中心”引用。centerPanel.getGUI();您可以通过调用main 方法来获取 'center' 的引用。这将返回centertype 的引用JComponent。JComponent 是一个 awt 容器。所以,你可以调用center.getComponents(). 这将返回 JPanel 中存在的数组中的所有组件。即中心参考。您可以迭代它们,获取它们的类型并做任何您想做的事情。

于 2013-10-13T13:41:59.630 回答