Java 使用GridLayout时,在按钮之间留出小空间
我正在尝试创建一个工具栏,它将位于我的JavaSwing应用程序中所有页面的顶部 我正在创建一个JPanel,其中包含一系列单独的JPanel(容器)。每个JPanel(容器)都有一个北方和南方组件,或者只有一个北方组件,使用GridLayout设置 我的问题是,我希望南北部分之间有一个小的差距,但我不知道如何做到这一点,也无法在互联网上找到任何帮助 下面是其中一个容器的代码的工作示例:Java 使用GridLayout时,在按钮之间留出小空间,java,swing,user-interface,gridbaglayout,jtoolbar,Java,Swing,User Interface,Gridbaglayout,Jtoolbar,我正在尝试创建一个工具栏,它将位于我的JavaSwing应用程序中所有页面的顶部 我正在创建一个JPanel,其中包含一系列单独的JPanel(容器)。每个JPanel(容器)都有一个北方和南方组件,或者只有一个北方组件,使用GridLayout设置 我的问题是,我希望南北部分之间有一个小的差距,但我不知道如何做到这一点,也无法在互联网上找到任何帮助 下面是其中一个容器的代码的工作示例: public static void CustomersGui(){ final JFra
public static void CustomersGui(){
final JFrame frame = new JFrame("Nested Layout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel container1 = new JPanel();
container1.setLayout(new GridLayout(2,1));
JButton buttonDiary = new JButton("Diary");
buttonDiary.setPreferredSize(new Dimension(140, 25));
JButton buttonCars = new JButton("Cars");
buttonCars.setPreferredSize(new Dimension(140, 25));
container1.add(buttonDiary, BorderLayout.NORTH);
container1.add(buttonCars, BorderLayout.SOUTH);
frame.setContentPane(container1);
frame.pack();
frame.setVisible(true);
}
我正在尝试创建一个工具栏,它将位于我的JavaSwing应用程序中所有页面的顶部
你为什么不直接使用它呢?看
我正在创建一个JPanel,其中包含一系列单独的JPanel(容器)。每个JPanel(容器)都有一个南北方向
组件或仅一个北方组件,使用GridBagLayout设置
根据您的代码,这些语句都不正确:您正在添加按钮(而不是面板),并且您正在使用not:
此外,您正在使用BorderLayout
约束,这些约束将被GridLayout
或gridbagloayout
完全忽略:
container1.add(buttonDiary, BorderLayout.NORTH);
container1.add(buttonCars, BorderLayout.SOUTH);
您应该查看整个课程,了解布局管理器以及它们是如何工作的
此外
正如@nIcEcOw明智地指出的那样,由于Java 1.4BorderLayout
非常鼓励使用新常量:
PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER
来自教程(粗体文本):
在JDK 1.4版之前,各个领域的首选名称是
不同,从指南针的各个点(例如,
BorderLayout.NORTH
用于顶部区域)到
我们在示例中使用的常量我们的示例使用的常量是
首选,因为它们是标准的,使程序能够适应
具有不同方向的语言。
更新
现在,您的问题已被编辑为您实际使用了GridLayout
,答案很简单,您可以使用class'constructor:或setHgap()
和setVgap()
方法指定组件之间的水平和垂直间隙:
JPanel container1 = new JPanel(new GridLayout(2, 1, 8, 8));
// Or
GridLayout gridLayout = new GridLayout();
gridLayout.setRows(2);
gridLayout.setColumns(1);
gridLayout.setHgap(8);
gridLayout.setVgap(8);
JPanel container1 = new JPanel(gridLayout);
在将按钮添加到container1
面板时,不要忘记删除BorderLayout
约束,因为这些约束将被忽略:
container1.add(buttonDiary);
container1.add(buttonCars);
您可能还想看看这个主题:
我正在尝试创建一个工具栏,它将位于我的JavaSwing应用程序中所有页面的顶部
你为什么不直接使用它呢?看
我正在创建一个JPanel,其中包含一系列单独的JPanel(容器)。每个JPanel(容器)都有一个南北方向
组件或仅一个北方组件,使用GridBagLayout设置
根据您的代码,这些语句都不正确:您正在添加按钮(而不是面板),并且您正在使用not:
此外,您正在使用BorderLayout
约束,这些约束将被GridLayout
或gridbagloayout
完全忽略:
container1.add(buttonDiary, BorderLayout.NORTH);
container1.add(buttonCars, BorderLayout.SOUTH);
您应该查看整个课程,了解布局管理器以及它们是如何工作的
此外
正如@nIcEcOw明智地指出的那样,由于Java 1.4BorderLayout
非常鼓励使用新常量:
PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER
来自教程(粗体文本):
在JDK 1.4版之前,各个领域的首选名称是
不同,从指南针的各个点(例如,
BorderLayout.NORTH
用于顶部区域)到
我们在示例中使用的常量我们的示例使用的常量是
首选,因为它们是标准的,使程序能够适应
具有不同方向的语言。
更新
现在,您的问题已被编辑为您实际使用了GridLayout
,答案很简单,您可以使用class'constructor:或setHgap()
和setVgap()
方法指定组件之间的水平和垂直间隙:
JPanel container1 = new JPanel(new GridLayout(2, 1, 8, 8));
// Or
GridLayout gridLayout = new GridLayout();
gridLayout.setRows(2);
gridLayout.setColumns(1);
gridLayout.setHgap(8);
gridLayout.setVgap(8);
JPanel container1 = new JPanel(gridLayout);
在将按钮添加到container1
面板时,不要忘记删除BorderLayout
约束,因为这些约束将被忽略:
container1.add(buttonDiary);
container1.add(buttonCars);
您可能还想看看这个主题:注意,
GridLayout
有一个构造函数,它还允许您指定“hgap”和“vgap”:组件之间水平和垂直间隙的大小。或者,将BorderFactory.createEmptyOrder(1,2,3,4)
指定给内部组件是添加空格的一种可能方式(但仅当没有适当的布局选项以实现所需目标时才应使用),请查看。希望这会有所帮助:-)此外,您可以使用任何Swing组件:-)请注意,GridLayout
有一个构造函数,它还允许您指定“hgap”和“vgap”:组件之间的间隙大小,水平和垂直。或者,将BorderFactory.createEmptyOrder(1,2,3,4)
指定给内部组件是添加空格的一种可能方式(但仅当没有适当的布局选项以实现所需目标时才应使用),请查看。希望这将有帮助:-)此外,您可以使用任何Swing组件:-)请尝试分别使用BorderLayout.PAGE\u START
和BorderLayout.PAGE\u END
用于BorderLayout.NORTH
和BorderLayout.SOUTH
。Java积极鼓励程序员编写新的名称,而不是JDK 1.4:-)@dic19以来的前一个名称。如果你正确阅读了这个问题,你会看到它说这是其中一个容器的代码示例。该代码是按照MCVE原则编辑的,感谢他们指出@nIcEcOw的坏习惯是很难抛弃的。我刚刚编辑了我的答案