gpt4 book ai didi

java - 使用 GridBagLayout 在全屏上放置组件

转载 作者:行者123 更新时间:2023-12-04 05:33:15 24 4
gpt4 key购买 nike

我的问题是我想为我的项目制作更复杂的(对我来说)图形界面。首先,我使用全屏模式和下面的代码:

public class MainFrame extends JFrame
{
...
private Container container;
private GridBagLayout gbl;

public MainFrame()
{
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice dev = env.getDefaultScreenDevice();
dev.setFullScreenWindow(this);
setLayoutManager();
}
...
}

一切正常。
我要做的下一步是添加两个 JPanel。我想使用的布局管理器是 GridBagLayout。
private void setLayoutManager()
{
container = getContentPane();
gbl = new GridBagLayout();
container.setLayout(gbl);
}

private void addMenu()
{
MenuBar menu = new MenuBar();
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.ipady = 0;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 0.05;
gbl.setConstraints(menu, gbc);
container.add(menu);
}

private void addWorkArea()
{
WorkArea area = new WorkArea();
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbl.setConstraints(area, gbc);
container.add(area);
}

结果如下所示:

enter image description here

这是 my project :

为什么上面有 strip ?

更重要的是,当我单击并拖动时,所有应用程序都在移动。请帮帮我。对我来说,填满所有空间摆脱 JFrame 移动是很重要的。

最佳答案

当我告诉你问题是什么时,你会笑的......

无论出于何种原因,Java 都允许在布局内容时插入框架。也就是说,它仍然认为有标题栏和框架边框。

虽然修复非常复杂......

在您的 MainFrame构造函数,你需要调用 setUndecorated(true)在你做任何其他事情之前......

public MainFrame() {
setUndecorated(true); // <-- Add me
setFullScreen();
setResizable(false);
setTitle("Program");
setLayoutManager();
addMenu();
addWorkArea();
}

我知道,非常复杂(插入讽刺:P - 说真的,当它起作用时我让自己感到惊讶)

关于java - 使用 GridBagLayout 在全屏上放置组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310406/

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