Fai*_*que 4 java swing layout-manager gridbaglayout border-layout
我解释不好,但我会尽我所能.
我基本已经尝试添加在我的边框JLabel,JTextField和JButton我的内的组件JPanel,但边境根据规模不断扩大.
这是我的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginPanel
{
private JPanel loginPanel = new JPanel();
private JFrame loginFrame = new JFrame();
public LoginPanel()
{
loginPanel.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
JTextField textLogin = new JTextField(10);
JPasswordField password = new JPasswordField(10);
JButton login = new JButton("Login");
JButton register = new JButton("Register");
gridBagConstraints.insets = new Insets(0,0,0,0);
gridBagConstraints.gridy = 0;
gridBagConstraints.gridx = 0;
loginPanel.setBorder(BorderFactory.createTitledBorder("Login"));
loginPanel.add(new JLabel("E-Mail"), gridBagConstraints);
gridBagConstraints.gridy++;
loginPanel.add(textLogin, gridBagConstraints);
gridBagConstraints.gridy++;
loginPanel.add(new JLabel("Password"), gridBagConstraints);
gridBagConstraints.gridy++;
loginPanel.add(password, gridBagConstraints);
gridBagConstraints.gridy++;
loginPanel.add(login, gridBagConstraints);
gridBagConstraints.gridy++;
loginPanel.add(register, gridBagConstraints);
loginFrame.pack();
loginFrame.add(loginPanel);
loginFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
loginFrame.setLocationRelativeTo(null);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
loginFrame.setVisible(true);
}
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e)
{
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new LoginPanel();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是结果:

这就是我想要的边框:

希望图像解释更多,我会回复并提供所需的更多问题.
BorderLayout默认情况下,框架具有.添加到没有约束的边框布局的组件放入CENTER.边框布局中心的组件将拉伸到可用空间的整个宽度和高度.
它可以通过改变来修复:
loginFrame.pack();
Run Code Online (Sandbox Code Playgroud)
至:
loginFrame.setLayout(new GridBagLayout());
loginFrame.pack();
Run Code Online (Sandbox Code Playgroud)
由于添加到GridBagLayout没有约束的单个组件将居中.
GUI不会出现在此处,就像在屏幕截图中一样.相反,组件更紧密,标题边框紧贴它们.
第一个可以通过改变来修复:
gridBagConstraints.insets = new Insets(0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
至:
gridBagConstraints.insets = new Insets(5, 5, 5, 5);
Run Code Online (Sandbox Code Playgroud)
所述第二可通过使边界相结合的化合物的边界被固定EmptyBorder用TitledBorder.
Border border = new CompoundBorder(
new TitledBorder("Login"),
new EmptyBorder(40, 50, 40, 50));
loginPanel.setBorder(border);
//loginPanel.setBorder(BorderFactory.createTitledBorder("Login"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |