Java Gui将不会显示面板和组件

时间:2019-08-24 18:41:32

标签: java swing jpanel

im试图制作一个程序以将管理员添加到ms Access数据库

我研究了很多遍,发现所有组件都必须放在一个面板中,并且只有相同类型的J东西可以放在一个面板中,所以我制作了很多面板并将它们组合成一个大面板

        //frame details
        final int FRAME_WIDTH = 1000; 
        final int FRAME_HEIGHT = 1000; 
        JFrame aFrame = new JFrame("Add admin"); 
        aFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 
        aFrame.setVisible(true); 
        aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

        //panel declaration
        JPanel BigPanel = new JPanel();
        JPanel adminnameenter = new JPanel();
        JPanel typeadminname = new JPanel();
        JPanel adminlastnameenter = new JPanel();
        JPanel typeadminlastname = new JPanel();
        JPanel buttonaddadmin = new JPanel();

        //labels, textfields, and buttons
        JLabel newAdminName = new JLabel("Enter admin name");
        JTextField adminName = new JTextField(7);
        JLabel newadminlastname = new JLabel("Enter admin last name");
        JTextField adminlastname = new JTextField(7);
        JButton addadmin = new JButton("Add Admin");

        //add things to panel
        adminnameenter.add(newAdminName);
        typeadminname.add(adminName);
        adminlastnameenter.add(newadminlastname);
        typeadminlastname.add(adminlastname);
        buttonaddadmin.add(addadmin); 

        //add things to big jPanel
        BigPanel.add(adminnameenter);
        BigPanel.add(typeadminname);
        BigPanel.add(adminlastnameenter);
        BigPanel.add(typeadminlastname);
        BigPanel.add(buttonaddadmin);

        //add things to frame
        aFrame.add(BigPanel);

唯一弹出的是显示添加管理员的帧

1 个答案:

答案 0 :(得分:0)

将此代码添加到函数末尾:

aFrame.setVisible(false);
aFrame.setVisible(true);

或者放

aFrame.setVisible(true);

在函数的末尾而不是开始。

所有组件都会出现。这是因为只要您对JFrame进行任何更改,它都只会在被告知调整框架大小或刷新时才在用户侧更改。另外,您不需要将每个组件都放入自己的JPanel中,只需将它们直接插入到BigPanel中即可(小nitpick,但是bigPanel中的b不应大写,因为变量以非大写字母开头)。

还要研究LayoutManager,它们可能对您的应用程序有用。

https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html