如何将两个视图堆叠在一起?
How can I stack two views on top of each other?
我有 3 个视图,playView、gameView 和 timeView。
gameView 是左上角的方块。 timeView 是左下块,playView 是右块。
这是我需要重制的程序的照片。
我应该如何将这两个视图堆叠在一起。然后是那两个右边的另一个视图。
如您所见,左下方的块比左上方的块大一点。
我试过使用 GridLayout 和 BoxLayout,但其中 none 似乎有效。
这是我试过的。它确实有效,但左侧两个块的大小相同。
public void setGameView(GameView gameView, PlayView playView,TimeView timeView) {
this.gameView = gameView;
this.playView = playView;
this.timeView = timeView;
JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
subPanel.add(gameView);
subPanel.add(timeView);
this.add(playView, BorderLayout.EAST);
this.add(subPanel, BorderLayout.WEST);
}
我想要得到与照片相同的结果。如果有人能以正确的方式引导我。我应该使用什么布局?
在 BorderLayout
中,如果没有元素占据特定边框,CENTER
中的面板将延伸到父元素的边缘。
在您的情况下,您的 gamePanel
应该放在 CENTER
中,而不是 EAST
。您的子面板应保持在 WEST
.
中的位置
I set the size
您不应该设置尺寸。
如果您在面板上使用组件,则每个布局管理器将确定首选大小。
如果您正在进行自定义绘画,那么您的组件应该实施 getPreferredSize()
方法,以便布局管理器可以完成他们的工作。
when I use BoxLayout I am not able to place two components on the left side
JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
subPanel.add(gameView);
subPanel.add(timeView);
您正在设置错误的面板以使用 BoxLayout。
代码应该是:
//JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel subPanel = new JPanel();
subPanel.setLayout(new BoxLayout(subPanel, BoxLayout.Y_AXIS));
或者更简单的方法是起诉 Box
class:
Box subpanel = Box.createVerticalBox();
我有 3 个视图,playView、gameView 和 timeView。
gameView 是左上角的方块。 timeView 是左下块,playView 是右块。
这是我需要重制的程序的照片。
我应该如何将这两个视图堆叠在一起。然后是那两个右边的另一个视图。
如您所见,左下方的块比左上方的块大一点。
我试过使用 GridLayout 和 BoxLayout,但其中 none 似乎有效。
这是我试过的。它确实有效,但左侧两个块的大小相同。
public void setGameView(GameView gameView, PlayView playView,TimeView timeView) {
this.gameView = gameView;
this.playView = playView;
this.timeView = timeView;
JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
subPanel.add(gameView);
subPanel.add(timeView);
this.add(playView, BorderLayout.EAST);
this.add(subPanel, BorderLayout.WEST);
}
我想要得到与照片相同的结果。如果有人能以正确的方式引导我。我应该使用什么布局?
在 BorderLayout
中,如果没有元素占据特定边框,CENTER
中的面板将延伸到父元素的边缘。
在您的情况下,您的 gamePanel
应该放在 CENTER
中,而不是 EAST
。您的子面板应保持在 WEST
.
I set the size
您不应该设置尺寸。
如果您在面板上使用组件,则每个布局管理器将确定首选大小。
如果您正在进行自定义绘画,那么您的组件应该实施 getPreferredSize()
方法,以便布局管理器可以完成他们的工作。
when I use BoxLayout I am not able to place two components on the left side
JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
subPanel.add(gameView);
subPanel.add(timeView);
您正在设置错误的面板以使用 BoxLayout。
代码应该是:
//JPanel subPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel subPanel = new JPanel();
subPanel.setLayout(new BoxLayout(subPanel, BoxLayout.Y_AXIS));
或者更简单的方法是起诉 Box
class:
Box subpanel = Box.createVerticalBox();