Java UI布局问题

sta*_*les 0 java layout user-interface

我正在尝试为独立应用程序创建一个清晰的Java UI布局.我知道JSwing不是最好的UI,但它就是我现在所拥有的.

我的UI目前看起来像: 在此输入图像描述

我希望文本排成一行,按钮排列,向上,以及所有这些按钮的提交和状态,彼此堆叠或平行.

我的布局目前是这样的:

        GroupLayout layout = new GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setAutoCreateGaps(true);
    layout.setAutoCreateContainerGaps(true);

    layout.setHorizontalGroup(layout.createSequentialGroup()
        .addComponent(lbl_inputFile)
        .addComponent(txt_inputFile)
        .addComponent(btn_inputFile)
        .addGroup(layout.createSequentialGroup()
                .addComponent(lbl_searchTermFile)
                .addComponent(txt_searchTermFile)
                .addComponent(btn_searchTermFile))
        .addGroup(layout.createSequentialGroup()
                .addComponent(lbl_outputFile)
                .addComponent(txt_outputFile)
                .addComponent(btn_outputFile))
        .addGroup(layout.createSequentialGroup()
        .addComponent(btn_sumbit)
        .addComponent(lbl_status))
    );

    layout.linkSize(SwingConstants.HORIZONTAL, btn_inputFile, btn_outputFile, btn_searchTermFile);

    layout.setVerticalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_inputFile)
                    .addComponent(txt_inputFile)
                    .addComponent(btn_inputFile))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(lbl_searchTermFile)
                    .addComponent(txt_searchTermFile)
                    .addComponent(btn_searchTermFile))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(lbl_outputFile)
                    .addComponent(txt_outputFile)
                    .addComponent(btn_outputFile))
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(btn_sumbit)
                    .addComponent(lbl_status))
    );
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现我想要的?

Nag*_*mar 5

您可以使用http://www.miglayout.com/中的 MigLayout布局管理器. 您可以从此站点下载用于Swing的jar文件miglayout-4.0-swing.jar,使其在您的项目类路径中可用.为了让您了解布局管理器的工作原理,下面是快速入门的源代码

JPanel panel = new JPanel(new MigLayout());
panel.add(firstNameLabel);
panel.add(firstNameTextField);
panel.add(lastNameLabel,"gap unrelated");
panel.add(lastNameTextField,"wrap");
panel.add(addressLabel);
panel.add(addressTextField,"span, grow");
Run Code Online (Sandbox Code Playgroud)

以上代码生成以下面板 在此输入图像描述 如果您使用的是eclipse,那么您可以使用Google的WindowBuilder插件(http://www.eclipse.org/windowbuilder/download.php).它的GUI表单设计器也支持Swing,特别是它包含对MigLayout布局管理器的内置支持.以下是在Eclipse中打开WindowBuilder的屏幕截图 在此输入图像描述