Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GridBagLayout在全屏上放置组件_Java_Swing_Awt_Layout Manager_Gridbaglayout - Fatal编程技术网

Java 使用GridBagLayout在全屏上放置组件

Java 使用GridBagLayout在全屏上放置组件,java,swing,awt,layout-manager,gridbaglayout,Java,Swing,Awt,Layout Manager,Gridbaglayout,我的问题是我想为我的项目制作更复杂的图形界面。首先,我使用全屏模式,代码如下: public class MainFrame extends JFrame { ... private Container container; private GridBagLayout gbl; public MainFrame() { GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDev

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

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移动。

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

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

不过,修复过程非常复杂

在您的
大型机
构造函数中,您需要在执行任何其他操作之前调用
setUndercorated(true)

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

StunNaldFrue(true);// 1)为了更好的帮助,在2之后)考虑使用嵌套布局。3)将问号添加到问题中。在设置布局后尝试设置全屏。也尝试将布局设置到框架本身,而不是CordPANEI知道答案“不做”。通常是不受欢迎的,但是…GridBagLayout必须是最难理解/使用的布局管理器。有很多更容易使用的布局管理器。例如,看看MigLayout。或者至少使用嵌套的BorderLayout。我是第二个灰胡子怪。比GridBagLayout更容易使用。他有一个很棒的备忘单re:+1对于编译的完整源代码:dy你的意思是它不是通过调用
pack()
validate()
来修复的?顺便问一下-你下载了RAR吗?注意到你的评论。可编译的…我想你的意思是他需要调用
setUndercorated(true);
而不是
setUndercorated(false);
…@guillaumepolet,不如上所述,需要对框架进行装饰,以便移除幻影框架insets@Andrew是的,下载了rar并直接根据他的代码进行测试。很高兴有编译的代码runs@MadProgrammer这正是我要说的,但你的答案是自相矛盾的。在文本中,你说你需要打电话StunNo饰(false)之前…但是在您的代码中调用<代码> StunNo装饰(True);< /Cord>考虑重新阅读您的答案。