JPanel改变了我的布局

时间:2017-05-29 21:21:38

标签: java swing netbeans jpanel layout-manager

我使用NetBeans为学校做工作。我有一个巨大的JPanel,包含一个巨大的JFrame。 JFrame作为5个小JFrame,1是带按钮的菜单,其他是带有文本的框,当我在按钮中选择时它将交换。 当一个框显示时,其他的框使用以下代码是不可见的(不知道它是否是最好的):

     public ConversorUI() {
            initComponents();
           PanelVazio.setVisible(true);
           PanelTemp.setVisible(false);
           PanelComp.setVisible(false);
           PanelMoedas.setVisible(false);
           this.pack();
        }

我的问题是, 当我运行我的程序时,我有一个没有任何空间的大空间,只有在它下面的组件出现 。我希望它们出现在我的窗口顶部。我能做什么 ?

ANSWER 经过一段时间的搜索后,我意识到我可以将布局从JPanel设置为卡片布局,并相互创建JPanels,用代码激活它们:

    private void DinheiroButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               
        //Remove Panels
        CAIXA.removeAll();
        CAIXA.repaint();
        CAIXA.revalidate();

        //Add Panels
        CAIXA.add(DinheiroBox);
        CAIXA.repaint();
        CAIXA.revalidate();
    }        

3 个答案:

答案 0 :(得分:0)

您可以一次加载一个jframe 因为您添加的每个jframe都有自己的位置,并且可见性不会删除任何内容 尝试保存每个jframe并进行更改 删除旧的并添加新的

答案 1 :(得分:0)

看起来你正在使用Java Swing,对吧?

如果你的JPanel包含JFrame,那么你做错了什么。要构建正确的UI,您必须在JFrame中添加JPanel。

此外,要获得正确的组件顺序并需要配置相应的布局,here就是说明。

答案 2 :(得分:0)

为什么使用多个JFrame来执行此操作?从我所看到的最好是使用可以处理各个任务的JPanels,例如菜单和按钮等。

我自己使用javax.swing比较新,但据我所知,每个窗口一次只能有1帧(就像其他人说的那样)。

从我能够从您的项目中辨别出来,您可能甚至不需要多个面板。您只需要一个带有按钮的菜单面板,以及根据按钮显示文本的多个标签或JLabel。您可以在编写addActionListener时使用setText方法,如下所示:

Query(Mymodel).filter(MyModel.managers.comparator.contains(["user@gmail.com"]))