我是Java Swing的新手 . 我正在尝试制作一个包含三个按钮的框架;一个在中心,另一个在顶部,最后一个在右边 . 我想让NORTH和EAST边框的宽度相同 . 但是现在,东部边界比北部边界更宽 .
我想知道在BorderLayout中是否有办法改变WEST / EAST边界的宽度或NORTH / SOUTH边界的高度 .
假设您已经在使用BorderLayout,您可以使用面板来控制框架的布局并创建边框感 . 然后,您可以使用setPreferredSize(new Dimension(int,int))请求首选大小,其中(int,int)分别是width和height . 边框的代码看起来像这样:
JPanel jLeft = new JPanel(); JPanel jRight = new JPanel(); JPanel jTop = new JPanel(); JPanel jBottom = new JPanel(); add(jLeft, "West"); jLeft.setPreferredSize(new Dimension(40, 480)); add(jRight, "East"); jRight.setPreferredSize(new Dimension(40, 480)); add(jTop, "North"); jTop.setPreferredSize(new Dimension(640, 40)); add(jBottom, "South"); jBottom.setPreferredSize(new Dimension(640, 40));
上面的示例要求所有边框具有相同的厚度,因为东西边界的宽度与北边界和南边界的高度相匹配 . 这将是一个大小(640,480)的框架 . 然后,您可以使用以下内容将按钮添加到框架:
JButton button = new JButton(); jTop.add(button); button.setPreferredSize(new Dimension(60, 20));
你可以在这里找到另一个很好的setPreferredSize用法示例:https://stackoverflow.com/a/17027872
阅读文档怎么样?
http://docs.oracle.com/javase/6/docs/api/java/awt/BorderLayout.html#BorderLayout%28int,%20int%29:
构造具有组件之间指定间隙的边框布局 . 水平间隙由hgap指定,垂直间隙由vgap指定 .
据我所知,你无法直接设置边框区域的高度/宽度 . 您只能指定放置在这些区域内的组件的大小 .
但是,如前所述,您可以指定区域之间的差距 .
GridBagLayout更灵活,但也更复杂 .
在Swing中构建布局并不总是那么容易 - 也许使用MigLayout(第三方库)可以简化一些事情:http://www.miglayout.com/
3 回答
假设您已经在使用BorderLayout,您可以使用面板来控制框架的布局并创建边框感 . 然后,您可以使用setPreferredSize(new Dimension(int,int))请求首选大小,其中(int,int)分别是width和height . 边框的代码看起来像这样:
上面的示例要求所有边框具有相同的厚度,因为东西边界的宽度与北边界和南边界的高度相匹配 . 这将是一个大小(640,480)的框架 . 然后,您可以使用以下内容将按钮添加到框架:
你可以在这里找到另一个很好的setPreferredSize用法示例:https://stackoverflow.com/a/17027872
阅读文档怎么样?
http://docs.oracle.com/javase/6/docs/api/java/awt/BorderLayout.html#BorderLayout%28int,%20int%29:
据我所知,你无法直接设置边框区域的高度/宽度 . 您只能指定放置在这些区域内的组件的大小 .
但是,如前所述,您可以指定区域之间的差距 .
GridBagLayout更灵活,但也更复杂 .
在Swing中构建布局并不总是那么容易 - 也许使用MigLayout(第三方库)可以简化一些事情:http://www.miglayout.com/