多语言展示
当前在线:773今日阅读:19今日分享:20

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

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

Eclipse

方法/步骤
1

步骤一 : 新建工程和类,写一个初步的窗口程序我们的窗口中什么也不添加,在 “initUI”中我们将使用“空布局”,向窗口容器中添加组件!

2

步骤二 : 初始化组件,将组件以“空布局”的形式添加到窗口容器中我们这里构建一个应用的登陆界面,包含两个标签(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 方法, 这个方法是“空布局”的精髓!通过这个方法,我们把已添加到容器中的组件放置在一个固定的位置上!并且可以设置组件的显示高度和宽度!

3

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

注意事项

setBounds方法的使用!坐标可能需要多次试验才能确定具体值!

推荐信息