java - 使用哪种布局以及如何使用?

标签 java swing layout

我想设计一个简单的表单,有 5 个组件:

2 个标签、1 个测试字段、1 个密码文本字段和 1 个按钮。我想要一个标签,然后是文本字段。

向下一行(或更多,应该可以看到一个漂亮的空间)我想要第二个标签,密码文本字段就在右边。

在它下面的第三行,在中间,我想要按钮。

我正在尝试在没有 WindowsBuilder 或任何辅助工具的情况下执行此操作,但是,我是 Java 的新手。

package HR;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;


import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JFormattedTextField;
import javax.swing.JButton;

import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class SignIn extends JFrame
{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public SignIn()
    {
        this.setTitle("HR SYSTEM LOGIN SCREEN");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setBounds(100, 100, 308, 179);
        JPanel contentPane = new JPanel();
        this.getContentPane().add(contentPane);

        JLabel userName = new JLabel("User Name");
        contentPane.add(userName);

        JLabel password = new JLabel("Password");
        contentPane.add(password);

        JFormattedTextField userText = new JFormattedTextField();
        contentPane.add(userText);

        JPasswordField passwordText = new JPasswordField();
        contentPane.add(passwordText);

        JButton signButton = new JButton("Sign In");
        contentPane.add(signButton);



    }

}

最佳答案

对于 WindowsBuilder,我会使用 GroupLayout (标准 API),MigLayout (第三方)或 JGoodies FormLayout (第三者)。他们都得到了很好的支持,并且会做你想做的事。如果您打算手动编写 UI 代码(为什么?),MigLayout 是一个不错的选择。

WindowsBuilder 文档和优点:

  • GroupLayout :非常灵活的布局管理器,专为 GUI Builders 使用而设计。一种流行的 Swing 开发组合是 Netbeans Swing GUI Builder (Matisse)和 GroupLayout(但 WindowsBuilder 也做得很棒)。作为 Java 开发人员很长一段时间,在 WindowsBuilder Pro 被 Google 收购并免费提供之前,我曾经打开 Netbeans 窗口只是为了构建 UI :)。该布局使用分层组加上大小调整和锚定策略,与 Delphi 中的处理方式非常相似。
  • MigLayout : 自首次发布以来已经走了很长一段路。作为“用于 Java 的最通用和最灵活的 Swing 和 SWT 布局管理器”获得了动力(引用 WindowsBuilder 文档)。它很容易与 GUI Builder 一起使用或手动使用。使用字符串常量或 API 检查约束。
  • JGoodies FormLayout :曾经是构建 Swing Forms 的非官方标准。它是一个灵活而精确的 UI 管理器,可以与 JGoodies Looks 结合使用。以获得非常好的跨平台体验。它也可以手动使用,但在与智能 GUI 编辑器(如 IntelliJ IDEA Swing GUI Designer)结合使用时真正发挥作用。 (WindowsBuilder 也可以)。它使用带有字符串描述和组件构建器的网格布局系统,使一切变得简单明了。

个人观点:

我是新来的!我不知道该用什么: 使用 GroupLayout,它是标准的,不需要第三方 jar 文件。克制手动编辑 UI 代码的冲动(认真的!)。

但我想手动编辑 UI 代码: 好的,使用 MigLayout,好的组件,很多易于掌握的字符串常量。

当我在不同的操作系统中打开我的应用程序时,UI 未正确呈现:使用 JGoodies 组合并遵循开发指南,同时遵循 UI Builder 提示添加间隙和额外的空白空间和约束无处不在。这在你的机器上可能看起来是一种浪费,但是一旦你处理不同的操作系统,运行不同的桌面环境,使用不同的字体 DPI,UI 仍然可以使用,因为你付出了额外的努力。

关于java - 使用哪种布局以及如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704278/

相关文章:

java - 如何使用camel-xstream定义自定义命名空间和标签别名

java - 自定义组件出现奇怪的油漆问题

CSS 对齐问题

java - LinearLayout 中的动态按钮数量

java - 进度条不变

grails - Grails View 框架中的性能问题

java - 我应该使用多线程吗

java - 为什么我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?

Java压缩一些代码

java - 在 JTextArea 中的特定位置插入字符串