Java Swing布局未正确显示

Java Swing布局未正确显示,java,swing,jmenubar,jtoolbar,Java,Swing,Jmenubar,Jtoolbar,我在Swing中制作GUI,作为一种布局,我使用不同的类来遵循MVC结构 在Main.class中,我在Swing中做了一个布局,以显示菜单栏和工具栏,它运行得非常好,但不知怎么的,它没有正确显示。我注意到的唯一一件事是JToolBar中的“边框”,但没有我放在里面的按钮,这让我认为在正确地将其输出到正确的面板/框架时存在问题 JFrame frame = new JFrame("Title"); JPanel panel = new JPanel(); frame.s

我在Swing中制作GUI,作为一种布局,我使用不同的类来遵循MVC结构

在Main.class中,我在Swing中做了一个布局,以显示菜单栏和工具栏,它运行得非常好,但不知怎么的,它没有正确显示。我注意到的唯一一件事是JToolBar中的“边框”,但没有我放在里面的按钮,这让我认为在正确地将其输出到正确的面板/框架时存在问题

    JFrame frame = new JFrame("Title");
    JPanel panel = new JPanel();

    frame.setJMenuBar(new MenuBar());

    JToolBar toolbar = new ToolBar();


    GroupLayout panelLayout = new GroupLayout(panel);
    panel.setLayout(panelLayout);
    panelLayout.setHorizontalGroup(
            panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGap(0, 0, Short.MAX_VALUE)
    );
    panelLayout.setVerticalGroup(
            panelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGap(0, 400, Short.MAX_VALUE)
    );

    GroupLayout layout = new GroupLayout(frame.getContentPane());
    frame.getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(toolbar, GroupLayout.DEFAULT_SIZE, 900, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                            .addComponent(panel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(toolbar, GroupLayout.PREFERRED_SIZE, 39, GroupLayout.PREFERRED_SIZE)
                            .addContainerGap(22, Short.MAX_VALUE))
    );

    frame.pack();
    frame.setLocationRelativeTo (null); // Center on screen.
    frame.setVisible(true);
}
}

我使用不同的类只是为了坚持MVC结构

因此,没有必要使用不同的类。这不是MVC的重点

我唯一注意到的是JToolBar中的“边框”,但没有我放在里面的按钮

我们真的帮不了你,因为我们不知道你的
工具栏
类做什么

我的建议是忘记使用IDE生成GUI代码。生成的代码无法读取且无法维护

如果您手动创建GUI,您想要做的事情非常简单

要显示工具栏,基本代码如下:

frame.add(new ToolBar(), BorderLayout.PAGE_START);
与IDE生成的所有代码相比,这只是一行代码

对于主面板,您将有:

JPanel panel = new JPanel();
panel.add( someComponent );
frame.add(panel, BorderLayout.CENTER);
请阅读上Swing教程中的部分,以获取完整的示例

我使用不同的类只是为了坚持MVC结构

因此,没有必要使用不同的类。这不是MVC的重点

我唯一注意到的是JToolBar中的“边框”,但没有我放在里面的按钮

我们真的帮不了你,因为我们不知道你的
工具栏
类做什么

我的建议是忘记使用IDE生成GUI代码。生成的代码无法读取且无法维护

如果您手动创建GUI,您想要做的事情非常简单

要显示工具栏,基本代码如下:

frame.add(new ToolBar(), BorderLayout.PAGE_START);
与IDE生成的所有代码相比,这只是一行代码

对于主面板,您将有:

JPanel panel = new JPanel();
panel.add( someComponent );
frame.add(panel, BorderLayout.CENTER);
请阅读上Swing教程中的部分,以获取完整的示例