我的问题是我想为我的项目制作更复杂的(对我来说)图形界面。首先,我使用全屏模式,代码如下:
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);
}
结果如下:
以下是my project:
为什么顶部有条带?
当我点击并拖动时,所有应用程序都在移动。请帮我。对我来说,填补所有空间摆脱JFrame移动非常重要。
答案 0 :(得分:3)
当我告诉你问题是什么时,你会笑的。
Java,出于任何理由,在布局内容时允许框架插入。也就是说,它仍然认为有一个标题栏和框架边框。
这个修复虽然非常复杂......
在MainFrame
构造函数中,您需要在执行任何其他操作之前调用setUndecorated(true)
...
public MainFrame() {
setUndecorated(true); // <-- Add me
setFullScreen();
setResizable(false);
setTitle("Program");
setLayoutManager();
addMenu();
addWorkArea();
}
我知道,非常复杂(插入讽刺:P - 严重的是,当它工作时我感到惊讶)