我想构建以下布局:
+--------------+-------+
| | |
| | O |
| GAME | P |
| | T |
| | |
+--------------+-------+
| |
| CONDITIONS |
| |
+--------------+-------+
虽然每个组件应该是一个框架
我决定使用GridBagLayout
,它有点有用:
问题非常明显:框架是一种小型的方式
以下是其中一个框架的示例代码(它们几乎完全相同):如您所见,它们什么都不做
public class Game extends JInternalFrame {
public Game(){
super("Game");
}
}
以下是我如何构建布局:
//set dimension (x, y)
this.setSize(900, 600);
//deny resizing
this.setResizable(false);
//set position (x: top, y: left)
this.setLocation(300, 300);
[....]
this.options = new Options();
this.conditions = new Conditions();
this.game = new Game();
this.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.VERTICAL;
c.gridx = 1;
c.gridy = 0;
this.add(this.options, c);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
this.add(this.game, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
this.add(this.conditions, c);
this.options.setVisible(true);
this.conditions.setVisible(true);
this.game.setVisible(true);
所以我的问题是
1)如何让帧使用窗口的整个空间
2)如何以不同的大小制作它们(因为this.options.setSize(...)
不起作用?)
PS:以下是完整代码:http://pastebin.com/TSWyyi7v
答案 0 :(得分:1)
根据你的照片,BorderLayout会更容易:
setLayout( new BorderLayout() );
add(game, BorderLayout.CENTER);
add(options, BorderLayout.EAST);
add(conditions, BorderLayout.SOUTH);