Art*_*545 2 java user-interface swing layout-manager gridbaglayout
我正在研究第一个练习布局管理器的应用程序,我开始学习GridBagLayout,我想创建一个带有徽标和登录框的登录窗口.
目前我的应用程序如下所示:
img http://gyazo.com/a3a74033e71d4c24caa142af0ff3aa63.png
我觉得徽标离登录框太近了,远离顶部 - 因此我需要找到一种方法从底部给徽标一个边距,所以它有点到顶部,所以会有是两个组件之间的空间,徽标将在顶部栏附近.
是否可以使用GridBagLayout?
我已经尝试过设置Insets,0, 0, 0, 110它会将徽标向左移动一点,不知道为什么.
@Override
public void init() throws Exception {
GridBagLayout layout = new GridBagLayout();
super.setLayout(layout);
this.loginPane = new JPanel();
this.loginPane.setSize(400, 400);
this.loginPane.setBackground(Color.RED);
JTextField username = new JTextField();
username.setSize(200, 45);
BufferedImage logo = ImageIO.read(new File("assets/logo.png"));
JLabel logoLabel = new JLabel(new ImageIcon(logo));
GridBagConstraints t = new GridBagConstraints();
t.ipadx = logo.getWidth();
t.ipady = logo.getHeight();
t.gridx = 0;
t.gridy = 0;
super.add(logoLabel, t);
t.ipadx = 500;
t.ipady = 300;
t.gridwidth = 1;
t.gridheight = 1;
t.gridy++;
super.add(loginPane, t);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您还可以使用其他属性来更好地控制组件的宽度和高度(以百分比表示).
在Swing教程中如何使用GridBagLayout可以更好地扩展它
尝试t.weighty=0.5;将两者分开50%-50%并将组件放在中心.并让我知道它是否符合您的需要?
使用frame.pack()而不是frame.setSize()根据组件的首选大小拟合组件.
覆盖getPreferredSize()以设置首选大小JPanel而不是使用setSize()方法.
示例代码:
JPanel panel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(..., ...);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |