gpt4 book ai didi

java - Swing 布局未正确显示

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:43 24 4
gpt4 key购买 nike

我正在 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);
}

}

最佳答案

I'm using different classes just to adhere to the MVC structure.

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

The only thing I notice is 'the border' from the JToolBar, but none of the buttons I put inside it

我们无法真正提供帮助,因为我们不知道您的 ToolBar 类的作用。

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

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

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

frame.add(new ToolBar(), BorderLayout.PAGE_START);

与 IDE 生成的所有代码相比,这只是一行代码。

然后对于主面板,您将拥有:

JPanel panel = new JPanel();
panel.add( someComponent );
frame.add(panel, BorderLayout.CENTER);

阅读 Swing 教程中关于 How to Use BorderLayout 的部分获取完整示例。

关于java - Swing 布局未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com