Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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中CardLayout与GridLayout的结合_Java_Swing_Layout_Layout Manager_Autoresize - Fatal编程技术网

Java中CardLayout与GridLayout的结合

Java中CardLayout与GridLayout的结合,java,swing,layout,layout-manager,autoresize,Java,Swing,Layout,Layout Manager,Autoresize,我有一种情况,我在几个JPanel上使用CardLayout,因为我现在只想看到on。但是,我需要使JPanel的(每个)组件自动调整大小。我在谷歌上搜索,发现GridLayout或GridBagLayout(我发现)可以在调整JFrame大小时改变组件的形状 有谁能帮我把这两种布局结合起来,让它们一起工作 另外,所有JPanel都在单独的类中,主类是包含JFrame和CardLayout的类。还包含菜单栏。所有JPanel都有绝对布局(我想这也是一个问题),但我对布局不是很友好。在这种情况下,

我有一种情况,我在几个JPanel上使用CardLayout,因为我现在只想看到on。但是,我需要使JPanel的(每个)组件自动调整大小。我在谷歌上搜索,发现GridLayout或GridBagLayout(我发现)可以在调整JFrame大小时改变组件的形状

有谁能帮我把这两种布局结合起来,让它们一起工作

另外,所有JPanel都在单独的类中,主类是包含JFrame和CardLayout的类。还包含菜单栏。所有JPanel都有绝对布局(我想这也是一个问题),但我对布局不是很友好。

在这种情况下,名为
cards
JPanel
CardLayout
,但添加到
cards
CardPanel的每个实例都有默认
JPanel
布局,
流程布局
。您可以在
CardPanel
构造函数中更改布局并添加其他组件以查看效果

public CardPanel(String name) {
    this.name = name;
    this.setLayout(new GridLayout(0, 1); // a one column grid
    this.setBackground(new Color(random.nextInt()));
    this.add(new JLabel(name));
    this.add(new …);
    …
}

所有JPanel都有绝对布局(我想这也是一个问题)
-是的,这就是问题所在。使用绝对布局时,组件不会调整大小
但我对布局不太友好。
-这是您需要使用的解决方案,因此您需要花一些时间学习如何使用每个不同的布局来获得所需的外观。首先阅读上Swing教程中的部分,了解更多信息和工作示例。