Java 使用哪种布局以及如何使用?
我想设计一个简单的表单,包含5个组件: 2个标签、1个测试字段、1个密码文本字段和1个按钮。我想有一个标签,并在它的右边的文本字段 向下一行(或者多行,应该看到一个漂亮的空格)我想要第二个标签,右边是passwordtextfieldJava 使用哪种布局以及如何使用?,java,swing,layout,Java,Swing,Layout,我想设计一个简单的表单,包含5个组件: 2个标签、1个测试字段、1个密码文本字段和1个按钮。我想有一个标签,并在它的右边的文本字段 向下一行(或者多行,应该看到一个漂亮的空格)我想要第二个标签,右边是passwordtextfield 在下面的第三行中,在中间,我想要这个按钮。< /P> 我试图在没有WindowsBuilder或任何辅助工具的情况下完成这项工作,但是,我是Java的新手 package HR; import javax.swing.JFrame; import javax.s
在下面的第三行中,在中间,我想要这个按钮。< /P> 我试图在没有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);
}
}
要像你希望的那样放置你所有的东西,我将使用gridbaglayout。 但这很复杂,也不容易处理, 因此,在您的情况下,正常的网格布局就足够了
要像你希望的那样放置所有东西,我将使用gridbaglayout。 但这很复杂,也不容易处理, 因此,在您的情况下,正常的网格布局就足够了
对于WindowsBuilder,我会使用(标准API),(第三方)或(第三方)。所有这些都得到了很好的支持,可以做你想做的事情。如果您计划手工编写UI代码(为什么?),MigLayout是一个不错的选择 WindowsBuilder文档和优点:
- :非常灵活的布局管理器,专为GUI构建者设计。swing开发的一个流行组合是和GroupLayout(但WindowsBuilder也做得很好)。作为一名Java开发人员,在WindowsBuilderPro被谷歌收购并免费发布之前,我曾经打开一个Netbeans窗口来构建UI:)。布局使用分层组加上大小调整和锚定策略,与Delphi中的工作方式非常相似
- :自从第一次发布以来已经走了很长一段路。获得“Java最通用、最灵活的Swing和SWT布局管理器”的称号(引用WindowsBuilder文档)。它易于与GUI生成器一起使用或手动使用。使用字符串常量或API检查的约束
- :曾经是建造摇摆模板的非官方标准。它是一个灵活而精确的UI管理器,可以与结合使用,以获得非常好的跨平台体验。它也可以手动使用,但与智能GUI编辑器(如WindowsBuilder也可以)结合使用时,它确实非常出色。它使用带有字符串描述和组件生成器的网格布局系统,使一切变得简单明了
当我在不同的操作系统中打开应用程序时,UI没有正确呈现。:使用JGoodies组合并遵循开发指南,同时遵循UI生成器提示,在任何地方添加间隙、额外的空白和约束。在您的计算机中,这看起来可能是一种浪费,但一旦您使用不同的DPI字体处理运行不同桌面环境的不同操作系统,UI仍然可以使用,因为您需要付出额外的努力 对于WindowsBuilder,我将使用(标准API),(第三方)或(第三方)。所有这些都得到了很好的支持,可以做你想做的事情。如果您计划手工编写UI代码(为什么?),MigLayout是一个不错的选择 WindowsBuilder文档和优点:
- :非常灵活的布局管理器,专为GUI构建者设计。swing开发的一个流行组合是和GroupLayout(但WindowsBuilder也做得很好)。作为一名Java开发人员,在WindowsBuilderPro被谷歌收购并免费发布之前,我曾经打开一个Netbeans窗口来构建UI:)。布局使用分层组加上大小调整和锚定策略,与Delphi中的工作方式非常相似
- :自从第一次发布以来已经走了很长一段路。获得“Java最通用、最灵活的Swing和SWT布局管理器”的称号(引用WindowsBuilder文档)。它易于与GUI生成器一起使用或手动使用。使用字符串常量或API检查的约束
- :曾经是建造摇摆模板的非官方标准。它是一个灵活而精确的UI管理器,可以与结合使用,以获得非常好的跨平台体验。它也可以手动使用,但与智能GUI编辑器(如WindowsBuilder也可以)结合使用时,它确实非常出色。它使用带有字符串描述和组件生成器的网格布局系统,使一切变得简单明了
当我在不同的操作系统中打开应用程序时,UI没有正确呈现。:使用JGoodies组合并遵循开发指南,同时遵循UI生成器提示,在任何地方添加间隙、额外的空白和约束。在您的计算机中,这看起来可能是一种浪费,但一旦您使用不同的DPI字体处理运行不同桌面环境的不同操作系统,UI仍然可以使用,因为您需要付出额外的努力 基本上你有一个3 x 2的网格,在其中的四个单元格中你显示了一些东西。第五个元素横跨两个单元格 我将使用Gridbaglayout来定位这五个元素。通过仔细使用GridBaylayoutConstraints,可以调整零部件的拉伸行为。即,文本字段应最大拉伸,标签应无拉伸 我还要加上制服
package swing;
import java.awt.*;
import javax.swing.*;
public class LoginWithGridBagDemo implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new LoginWithGridBagDemo());
}
public void run()
{
JLabel userLabel = new JLabel("User Name");
JLabel passLabel = new JLabel("Password");
JTextField userText = new JTextField(20);
JPasswordField passText = new JPasswordField(20);
JButton loginButton = new JButton("Login");
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(4,4,4,4);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.NONE;
panel.add(userLabel, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
panel.add(userText, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.NONE;
panel.add(passLabel, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
panel.add(passText, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridwidth = 2;
panel.add(loginButton, gbc);
JFrame f = new JFrame("Login");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new JScrollPane(panel));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}