【问题标题】:Swing flow layout properties [closed]摆动流布局属性[关闭]
【发布时间】:2012-12-13 22:04:20
【问题描述】:

我一直在玩卡片布局演示:

http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/CardLayoutDemoProject/src/layout/CardLayoutDemo.java

我想构建一个这样的 gui,但我在流布局上苦苦挣扎,我找到了其他属性来帮助按需要分隔空间,但我无法让它们与这个示例一起使用。有人可以告诉我如何将以下属性应用于演示中的流布局:

public FlowLayout(int alignment, int horizontalGap, int verticalGap)

任何帮助都会很棒。

【问题讨论】:

  • 你想达到什么目的?
  • 只控制元素之间的间距和它们的对齐方式。我希望我可以在所有东西之间设置一个统一的间隙,因为它们都堆叠在一起。
  • @mao 参数名说明你想要什么。如果要以相同宽度对齐元素,请使用 GridLayout。

标签: java swing layout-manager flowlayout


【解决方案1】:

有时候,你只需要试验一下……

public class TestFlow {

    public static void main(String[] args) {
        new TestFlow();
    }

    public TestFlow() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridLayout(0, 1));
            add(createPane(FlowLayout.LEFT, 5, 5));
            add(createPane(FlowLayout.CENTER, 15, 15));
            add(createPane(FlowLayout.RIGHT, 20, 20));
            add(createPane(FlowLayout.LEADING, 0, 0));
            add(createPane(FlowLayout.TRAILING, 5, 5));
        }

        protected JPanel createPane(int alignment, int hGap, int vGap) {

            JPanel panel = new JPanel(new FlowLayout(alignment, hGap, vGap));
            panel.setBorder(new LineBorder(Color.GRAY));
            panel.add(new JLabel("Left"));
            panel.add(new JLabel("Middle"));
            panel.add(new JLabel("Right"));

            return panel;

        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    相关资源
    最近更新 更多