Java图形用户界面布局控制Layout练习

  尝试搭建登录对话框,包含两个文字标签(用户名、服务器IP),两个文本输入条(用户名、服务器IP),一个按钮(登录),按照自己认为合适的方式布局。
  我把GridLayout(网格布局)、BorderLayout(边界布局)、FlowLayout(流式布局)三种布局进行了比较并且做了尝试。
  终于到了使用Java得到图形反馈的结果,心里还有些小激动呢。虽然只是完成了界面的展示,没有功能的实现,但是成就感还是蛮大的,而且查询JDK文档真的非常有收获。

package gui;

import java.awt.*;
import javax.swing.*;

public class Dialog {

    public static void main(String[] args) {
        JDialog dialog=new JDialog();
        dialog.setTitle("登录");

        TextField text1 = new TextField(10);
        TextField text2 = new TextField(15);

        JLabel label1 = new JLabel("昵称");
        JLabel label2 = new JLabel("服务器");

        JButton button1 = new JButton("登录");

        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        JPanel panel3 = new JPanel();

        GridLayout gl = new GridLayout(3, 1);

        dialog.setLayout(gl);

        panel1.add(label1);
        panel1.add(text1);
        panel2.add(label2);
        panel2.add(text2);
        panel3.add(button1);

        dialog.add(panel1);
        dialog.add(panel2);
        dialog.add(panel3);

        dialog.setSize(300, 200);
        dialog.setLocationRelativeTo(null);
        dialog.setVisible(true);

    }

}

  这个是我们制作的聊天软件的登录界面部分,在gui包下,这一部分用来显示图形界面。首先,导入对应的Java包,把人家“写”好的容器、组件拿来使用。
  实际上图形界面的设计说白了也是类的关系,这也就是Java是面向对象的原因。Swing类对AWT类进行了扩展。布局管理器分为容器类和组件类,我们需要做的就是在容器中添加不同组件,完成布局。
  新建一个Dialog类,在主方法中,用JDialog类来创造一个Dialog的对象,这样实际上就创建了一个对话框,这样之后,只需要往其中加入相应的组件就好了。设置对话框的大小,用setSize方法设置长为300px,宽为200px。
  对话框有了,然后用JDialog类添加三个容器。
  创造两个标签,label取名为“用户名”,label2取名为“IP”,创造两个输入条,test1、test2根据需求最大容量为10、15。最后创造一个按钮,button1按钮对应的名称“登录”。
  把相应的组件放到指定的容器中。
  既然GridLayout是一个类,那么就找到Gridlayout()构造方法,然后构造一个三行一列的布局对象g1。布局也是对象,很奇妙有木有。接着找到了对应的setLayout方法,然后设置布局。
  根据顺序的不同,把一个个容器用add方法添加到对话框中。
  对话框设置后,希望展现的位置在屏幕居中,setter方法设置为null。
  目前界面布置好了,可是框架还不能显示,于是把可见性的setVisible法设为真值,如假包换的聊天工具界面就展现出来了。
  还有一种布局格式主要使用的边界布局。

package gui;

import java.awt.*;
import javax.swing.*;

public class LoginDialogDemo {

    public static void main(String[] args) {
        JDialog loginDialog=new JDialog();
        loginDialog.setTitle("登录");

        JLabel usernameLabel=new JLabel("昵称");
        JLabel ipLabel=new JLabel("服务器");

        JTextField usernameField=new JTextField(10);
        JTextField ipField=new JTextField(10);

        JButton loginButton=new JButton("登录");

        JPanel centerPanel=new JPanel(new GridLayout(2, 1));

        JPanel upPanel=new JPanel(new FlowLayout());
        upPanel.add(usernameLabel);
        upPanel.add(usernameField);

        JPanel downPanel=new JPanel();//JPanel默认用流式布局FlowLayout
        downPanel.add(ipLabel);
        downPanel.add(ipField);

        centerPanel.add(upPanel);
        centerPanel.add(downPanel);

        loginDialog.add(centerPanel,BorderLayout.CENTER);

        JPanel southPanel =new JPanel();
        southPanel.add(loginButton);

        loginDialog.add(southPanel, BorderLayout.SOUTH);

        loginDialog.setSize(300, 200);
        loginDialog.setLocationRelativeTo(null);
        loginDialog.setVisible(true);

    }

}

  组件上大同小异,布局上需要CETER和SOUTH部分,CETER部分中建立一个centerPanel容器嵌套一个2行一列的网格布局,网格布局中加入两个容器,upPanel和downPanel两部分,第一行upPanel使用流式布局,添加相应的标签和文本输入条,第二行downPanel没有表示出来,但是使用了默认的流式布局,同样加入组件。
  centerPanel在边框布局中默认放置于中部,所以不设置后面的属性BorderLayout.CENTER作用是一样的。因为只设置了中部区域和南部区域,所以中部会把未使用的区域占满,西、北、东区域将被中部占据位置。
  南部区域加入southPanel组件,然后加入loginButton按钮,大功告成。
  两种方式都完成了同样的效果,但是在实践中却有了不同的收获。我熟悉了FlowLayout、GridLayout、BorderLayout三种布局样式,就像原来学习《HTML5与CSS3基础教程》的时候学会了布局的搭配,掌握了有效率的查询JDK文档,更重要的是理解布局管理器的类关系,对于理解Java面向对象的概念又上升了一个台阶。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值