2

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

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);
}

结果看起来像这样:

在此处输入图像描述

这是我的项目

为什么上面有条?

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

4

1 回答 1

3

当我告诉你问题出在哪里时,你会笑的...

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

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

在您的MainFrame构造函数中,您需要setUndecorated(true)在执行任何其他操作之前调用...

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

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

于 2012-09-07T01:55:16.127 回答