繁体   English   中英

gui窗口中组件的对齐

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM