[英]Alignment of components in a gui window
我有一个看起来像window1的窗口,我希望它看起来像window2:
这是我的代码:
String q = "Have you used GUI before?";
JLabel textLabel2 = new JLabel(
"<html><div style=\"text-align: center;\">" + q + "</html>", SwingConstants.CENTER);
add(textLabel2, BorderLayout.NORTH);
JPanel radioPanel = new JPanel();
add(radioPanel, BorderLayout.CENTER);
JPanel btnPanel = new JPanel();
add(btnPanel, BorderLayout.SOUTH);
对于单选按钮,我尝试使用GridLayout,但它打破了“是”和“否”的位置。 而对于“后退”和“下一步”按钮,水平对齐不起作用( btnPanel.setAlignmentX(RIGHT_ALIGNMENT);
),显然。 任何解决方案都将受到高度赞赏,我坚持这么长时间。 谢谢
- 编辑 -
这工作得非常好:
btnPanel.setLayout(new BoxLayout(btnPanel, BoxLayout.LINE_AXIS));
btnPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
btnPanel.add(Box.createHorizontalGlue());
所以按钮问题就解决了。
但是,仍然无法修复收音机按钮。
--EDIT 2--
修复了使用setOpaque(false);
的单选按钮的背景setOpaque(false);
你是什么意思它“打破”“是”和“否”的位置,因为GridLayout应该工作得很好。 我通过new GridLayout(0, 1)
)给它1列和2(或0表示可变数量的)行。 通过执行radioPanel.setOpaque(false);
确保将其opaque属性设置为false radioPanel.setOpaque(false);
。 这样它将显示它所在容器的背景颜色。你可能需要使JRadioButtons不透明,我不确定。
你的btnPanel可以使用BoxLayout并使用Box.createGlue()将按钮推到右侧。
最重要的是 - 如果您还没有这样做,请阅读有关使用Swing布局管理器的教程,您可以在此处找到它们。
你可以做几件事。 您需要更改LayoutManager。 这对BorderLayout来说不是一项伟大的任务。 你可以做嵌套的BoxLayouts。 垂直方框,具有垂直固定高度支柱,标签,垂直固定高度支柱,是收音机,垂直固定支柱,无收音机,垂直胶水,以及最终按钮面板。 然后使用按钮面板中的编辑水平对齐它们。 这是一个选项,但面板的嵌套很烦人。
另一个选择是获取TableLayout并学习如何使用它。 TableLayout是最好的LayoutManagers之一。 它易于使用,经过严格测试,使Swing再次变得有趣。 你永远不会再使用GridBagLayout了。
http://java.sun.com/products/jfc/tsc/articles/tablelayout/
最后一个选项是使用新的GroupLayout。 我对它并不十分熟悉,但它看起来很简单。 并且,它不需要像Box那样需要太多代码或嵌套不必要的面板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.