问题重新绘制/更新单独类中的JPanel

时间:2012-12-11 15:36:14

标签: java swing jframe jpanel

我正在进行Java分配,并且我创建了一个JFrame applet,它有四个在不同类中创建的面板,这些面板返回到主类并添加到主面板。 我面临的问题是我的南面板中有一个组合框。基于该组合框的选择,我希望根据该选择更新一个或多个其他面板。我不知道如何实现这一目标,我已经着眼于重新绘制单个面板,甚至重新创建整个主面板。 任何帮助和/或建议将不胜感激。

我已经在主面板类中为初学者发布了以下代码。

我是第一次在这里发帖,所以如果没有足够的细节,或者我遗漏了一些东西,请告诉我。

public class Main_GUI_Panel extends JFrame {

    public static Panel_North northPanel;
    public static Panel_Center centerPanel;
    public static Panel_West westPanel;
    public static Panel_South southPanel;
    private int index = -1;

    public Main_GUI_Panel() {
        super("Java 2: Final Project");
        getContentPane().setBackground(Color.BLACK); //set the applet background color
        setLayout(new BorderLayout());  //set the Layout for the applet

        //START - call methods to create & set panels
            northPanel = new Panel_North();
            westPanel = new Panel_West();
            centerPanel = new Panel_Center();
            southPanel = new Panel_South();

            add(northPanel.setNorth(),BorderLayout.NORTH); //set the North portion of the applet
            add(westPanel.setWest(index),BorderLayout.WEST); //set the West portion of the applet
            add(centerPanel.setCenter(),BorderLayout.CENTER); //set the Center portion of the applet
            add(southPanel.setSouth(),BorderLayout.SOUTH); //set the South portion of the applet
        //END - call methods to set panels
    }

1 个答案:

答案 0 :(得分:1)

创建GUI时,您应该(必须)创建一个或多个模型类来保存GUI的数据。这是模型。您的GUI组件是视图。这些部分组成了应用程序的模型/视图/控制器(MVC)。

将顶级模型类的实例传递给GUI的所有面板。每个面板都可以更新模型类,反过来,面板从模型中获取数据。

因此,您在一个面板中执行的操作可能会影响其他面板的显示。

This answer详细介绍了GUI模型和GUI视图。