【发布时间】:2014-09-18 04:41:24
【问题描述】:
我正在开发我的第一个应用程序来练习布局管理器,我开始学习 GridBagLayout,我想创建一个带有徽标和登录框的登录窗口。
目前我的应用如下所示:
(来源:gyazo.com)
我觉得 logo 离登录框太近了,而且离顶部太远了——因此我需要找到一种方法让 logo 从底部留出一个边距,所以它有点到顶部,所以两个组件之间会有一个空格,并且徽标会靠近顶部栏。
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);
}
我该怎么做?
【问题讨论】:
-
我本人是一个巨大的 Swing 开发人员,我会这样说:如果您花时间学习一个新的 API,我建议学习 JavaFX 而不是 Swing。 Swing 在这一点上几乎被弃用了。
标签: java swing user-interface layout-manager gridbaglayout