我有一个看起来像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());
所以按钮问题就解决了。
但是,仍然无法修复单选按钮。
- 编辑2 -
修复了使用setOpaque(false);
答案 0 :(得分:4)
你是什么意思“打破”“是”和“否”的位置,因为GridLayout应该工作得很好。我通过new GridLayout(0, 1)
给它1列和2(或0表示可变数量)行。通过radioPanel.setOpaque(false);
确保将其opaque属性设置为false。这样它就会显示它所在容器的背景颜色。你可能还需要使JRadioButtons不透明,我不确定。
你的btnPanel可以使用BoxLayout并使用Box.createGlue()将按钮推到右侧。
最重要的是 - 如果您还没有这样做,请阅读有关使用Swing布局管理器的教程,您可以找到here。
答案 1 :(得分:4)
你可以做些几件事。您需要更改LayoutManager。这对BorderLayout来说不是一项伟大的任务。你可以做嵌套的BoxLayouts。垂直方框,具有垂直固定高度支柱,标签,垂直固定高度支柱,是收音机,垂直固定支柱,无收音机,垂直胶水,以及最终按钮面板。然后使用按钮面板中的编辑水平对齐它们。这是一个选择,但面板的嵌套很烦人。
另一个选择是获取TableLayout并学习如何使用它。 TableLayout是最好的LayoutManagers之一。它易于使用,经过严格测试,使Swing再次变得有趣。你永远不会再使用GridBagLayout了。
http://java.sun.com/products/jfc/tsc/articles/tablelayout/
最后一个选项是使用新的GroupLayout。我对它并不十分熟悉,但它看起来很简单。并且,它不需要像Box那样需要太多代码或嵌套不必要的面板。