当前位置:酷酷问答>百科问答>JAVA入门之Swing中空布局 (绝对布局) 的使用

JAVA入门之Swing中空布局 (绝对布局) 的使用

2024-12-05 15:55:31 编辑:zane 浏览量:563

JAVA入门之Swing中空布局 (绝对布局) 的使用

的有关信息介绍如下:

JAVA入门之Swing中空布局 (绝对布局) 的使用

我们在前面的经验中陆陆续续给大家介绍了Swing中的各种布局方式,包括流式布局(FlowLayout),边界布局(BorderLayout),格布局(GridLayout),高级格布局(GridBagLayout),通过这些布局方式的组合应用,基本所有用户界面都可以构建出来,但如果你就是遇到一个你无法构建的奇怪界面该怎么办呢? Swing还给了你一柄超牛的布局利器---空布局(又称绝对布局), 其本质就是---没有布局!!这篇经验就告诉你如何使用空布局来构建一个界面。

步骤一 : 新建工程和类,写一个初步的窗口程序

我们的窗口中什么也不添加,在 “initUI”中我们将使用“空布局”,向窗口容器中添加组件!

步骤二 : 初始化组件,将组件以“空布局”的形式添加到窗口容器中

我们这里构建一个应用的登陆界面,包含两个标签(JLabel),两个输入框(JTextField),两个按钮(JButton);我们将容器的布局方式设置为 "空布局",并将组件以绝对位置的形式(这就是“空布局”也被称为“绝对布局”的原因)放置在容器中!

相关代码为 :

// javax.swing.JPanel 代表一张画布(标准称呼是容器)

// 其代表一个空间,用户放置其他可视性的控件 比如按钮,文本等

JPanel contentPanel = new JPanel();

// 设置这个容器的布局方式是空布局

contentPanel.setLayout(null);

// 初始化所需组件

JLabel nameLabel = new JLabel("用户名 :");

JTextField nameTxt = new JTextField();

JLabel pwLabel = new JLabel("密码 :");

JTextField pwTxt = new JTextField();

JButton forgetPwBtn = new JButton("忘记密码");

JButton loginBtn = new JButton("登陆");

// 将组件全部添加到容器中

contentPanel.add(nameLabel);

contentPanel.add(nameTxt);

contentPanel.add(pwLabel);

contentPanel.add(pwTxt);

contentPanel.add(forgetPwBtn);

contentPanel.add(loginBtn);

// 调用 setBounds(x,y,width,height) 设置组件的特定位置

// 对应四个参数分别为 : 横坐标,纵坐标,组件宽度,组件高度

nameLabel.setBounds(140, 100, 60, 35);

nameTxt.setBounds(210, 100, 250, 35);

pwLabel.setBounds(140, 160, 60, 35);

pwTxt.setBounds(210, 160, 250, 35);

forgetPwBtn.setBounds(140, 220, 100, 35);

loginBtn.setBounds(350, 220, 100, 35);

// 最后将这张画布添加到窗口中显示

getContentPane().add(contentPanel);

我们要重点关注所有组件调用的 setBounds 方法, 这个方法是“空布局”的精髓!通过这个方法,我们把已添加到容器中的组件放置在一个固定的位置上!并且可以设置组件的显示高度和宽度!

步骤三 : 运行查看界面效果

我们可以看到,组件按照我们的设置被放置在界面的特定区域!通过界面,我们可以看到 setBounds(x, y, width, height) 方法四个参数的具体含义!

步骤四 : 总结

"空布局" 又称 "绝对布局", 就是没有布局的含义,界面所有元素都需要我们手动指定具体位置(通过 x,y两个坐标)和大小(通过 width, height两个尺寸)。对于一些特殊的界面,如果无法通过常用的那几种布局方式来实现或者实现难度较大时,我们可以考虑使用这种布局方式!

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/answer/153377.html
热门文章