疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java基础Swing界面开发总结


 

   

  一、java的图形界面

  1.awt java.awt

  jdk1.4之前推出的图形界面,用c/c++编写,跨平台性不好

  2.swing javax.swing

  jdk1.4时推出的图形界面,跨平台性好

  二、常用的组件

  1.容器组件

  JFrame 窗体类 最顶级的容器(默认布局为边框布局,不能自己互相添加)

  JPanel 面板类 最灵活的容器(可以自己互相添加)

  2.元素组件

  JLabel 标签类

  JTextField 文本输入框类(可以设置框内字符、输入框长度)

  JPasswordField 密码输入框类(框内字符会被特定字符代替)

  JCheckBox 复选框类

  JComboBox 下拉框类

  JButton 按钮类

  容器和组件都是swing包下的类。javax.swing.JFrame

  三、常用的布局

  1.布局类只能用在容器中。设置布局时需用setLayout()

  BorderLayout 边框布局(将窗体分为上下左右中五个区域,调用时分别.NORTH,.SOUTH,.WEST,.EAST,.CENTER,若

  未标明表示CENTER,未添加布局时默认为边框布局加在中央)

  FlowLayout 流式布局(如同文本文档一样一行一行排列,排列满换行,默认方向为从左向右,可以设置对齐方

  向)

  GridLayout 网格布局(可以设置几列几行,间距)

  这三种都是位于awt包下的类。java.awt.***Layout

  四、简单登录界面的实现

  1.新建一个xxx类(Login),在类中定义主函数。

  2.在类中定义一个初始化界面的方法(initUI)

  3.在初始化界面的方法中,实例化一个顶级容器(JFrame)类的对象。

  4.设置JFrame对象的属性值(标题,大小,显示位置,关闭退出程序,禁止调整大小,可见,该步完成对一个窗体

  的创建)

  5.实例化元素组件对象,将对象添加到窗体上

  6.在主函数中实例化Login类的对象,用对象名调用初始化界面的方法。

  注:setDefaultCloseOperation()括号中可选数字,3是关闭时退出程序。0是不关闭。1是隐藏,2是关闭时程序

  继续工作。

  setVisible(true)必须放在最后才能显示所有组件。true为可见。

  setSize()大小为像素点的大小。默认起点为左上角。

  五、代码

  1.简单的登录界面

  可以用流式布局或者边框布局。

  Java代码

  package cn.wz.study0718;

  //定义一个登录界面

  public class showFrameqq {

  // 入口主函数

  public static void main(String[] args) {

  // 实例化showFrameqq类的对象

  showFrameqq showqq = new showFrameqq();

  //调用qq界面的方法

  showqq.initGUI();

  }

  //定义一个qq界面的方法

  public void initGUI(){

  //实例化一个JFrame类的对象

  javax.swing.JFrame jf = new javax.swing.JFrame();

  //设置窗体的标题属性

  jf.setTitle("QQ登录界面");

  //设置窗体的大小属性

  jf.setSize(300,200);

  //设置窗体的位置属性

  jf.setLocation(450,200);

  //设置窗体关闭时退出程序

  jf.setDefaultCloseOperation(3);

  //设置禁止调整窗体的大小

  jf.setResizable(false);

  //实例化一个布局类的对象

  java.awt.FlowLayout fl = new java.awt.FlowLayout();

  //设置窗体的布局方式为流式布局

  jf.setLayout(fl);

  //实例化一个JLabel标签类的对象

  javax.swing.JLabel jlaName = new javax.swing.JLabel("

  ");

  //将jlaName对象添加到容器JFrame对象上

  jf.add(jlaName);

  //实例化一个JTextField对象

  javax.swing.JTextField jteName = new javax.swing.JTextField("账号",20);

  //将jteName对象添加到容器JFrame对象上

  jf.add(jteName);

  //实例化一个JLabel对象

  javax.swing.JLabel jlaName2 = new javax.swing.JLabel("注册账号");

  //将jlaName2对象添加到容器JFrame对象上

  jf.add(jlaName2);

  //实例化一个JPasswordField对象

  javax.swing.JPasswordField jpaName = new javax.swing.JPasswordField("请输入密码",20);

  //将jpaName对象添加到容器JFrame对象上

  jf.add(jpaName);

  //实例化一个JLabel对象

  javax.swing.JLabel jlaName3 = new javax.swing.JLabel("找回密码");

  //将jlaName3对象添加到容器JFrame对象上

  jf.add(jlaName3);

  //实例化一个JCheckBox对象

  javax.swing.JCheckBox jchName = new javax.swing.JCheckBox("记住密码");

  //将jchName3对象添加到容器JFrame对象上

  jf.add(jchName);

  //实例化一个JCheckBox对象

  javax.swing.JCheckBox jchName2 = new javax.swing.JCheckBox("自动登录");

  //将jchName3对象添加到容器JFrame对象上

  jf.add(jchName2);

  //实例化一个JCheckBox对象

  javax.swing.JButton jbuName = new javax.swing.JButton(" 登 录

  ");

  //将jButton对象添加到容器JFrame对象上

  jf.add(jbuName);

  jf.setVisible(true);

  }

  }

  package cn.wz.study0718;

  //定义一个登录界面

  public class showFrameqq {

  // 入口主函数

  public static void main(String[] args) {

  // 实例化showFrameqq类的对象

  showFrameqq showqq = new showFrameqq();

  //调用qq界面的方法

  showqq.initGUI();

  }

  //定义一个qq界面的方法

  public void initGUI(){

  //实例化一个JFrame类的对象

  javax.swing.JFrame jf = new javax.swing.JFrame();

  //设置窗体的标题属性

  jf.setTitle("QQ登录界面");

  //设置窗体的大小属性

  jf.setSize(300,200);

  //设置窗体的位置属性

  jf.setLocation(450,200);

  //设置窗体关闭时退出程序

  jf.setDefaultCloseOperation(3);

  //设置禁止调整窗体的大小

  jf.setResizable(false);

  //实例化一个布局类的对象

  java.awt.FlowLayout fl = new java.awt.FlowLayout();

  //设置窗体的布局方式为流式布局

  jf.setLayout(fl);

  //实例化一个JLabel标签类的对象

  javax.swing.JLabel jlaName = new javax.swing.JLabel(" ");

  //将jlaName对象添加到容器JFrame对象上

  jf.add(jlaName);

  //实例化一个JTextField对象

  javax.swing.JTextField jteName = new javax.swing.JTextField("账号",20);

  //将jteName对象添加到容器JFrame对象上

  jf.add(jteName);

  //实例化一个JLabel对象

  javax.swing.JLabel jlaName2 = new javax.swing.JLabel("注册账号");

  //将jlaName2对象添加到容器JFrame对象上

  jf.add(jlaName2);

  //实例化一个JPasswordField对象

  javax.swing.JPasswordField jpaName = new javax.swing.JPasswordField("请输入密码",20);

  //将jpaName对象添加到容器JFrame对象上

  jf.add(jpaName);

  //实例化一个JLabel对象

  javax.swing.JLabel jlaName3 = new javax.swing.JLabel("找回密码");

  //将jlaName3对象添加到容器JFrame对象上

  jf.add(jlaName3);

  //实例化一个JCheckBox对象

  javax.swing.JCheckBox jchName = new javax.swing.JCheckBox("记住密码");

  //将jchName3对象添加到容器JFrame对象上

  jf.add(jchName);

  //实例化一个JCheckBox对象

  javax.swing.JCheckBox jchName2 = new javax.swing.JCheckBox("自动登录");

  //将jchName3对象添加到容器JFrame对象上

  jf.add(jchName2);

  //实例化一个JCheckBox对象

  javax.swing.JButton jbuName = new javax.swing.JButton(" 登 录 ");

  //将jButton对象添加到容器JFrame对象上

  jf.add(jbuName);

  jf.setVisible(true);

  }

  }

  2.简单的计算器界面

  分析:使用网格布局。

  Java代码

  package cn.wz.study0718;

  //定义一个计算器界面

  public class showCalculaterFrame {

  //入口主函数

  public static void main(String[] args) {

  //实例化一个showCalculaterFrame类的对象

  showCalculaterFrame showCal = new showCalculaterFrame();

  //调用计算器界面的方法

  showCal.initGUI();

  }

  //定义一个计算器界面的方法

  public void initGUI(){

  //实例化一个JFrame类的对象

  javax.swing.JFrame jf = new javax.swing.JFrame();

  //设置窗体的标题属性

  jf.setTitle("计算器");

  //设置窗体的大小属性

  jf.setSize(250,350);

  //设置窗体的位置属性

  jf.setLocation(400,200);

  //设置窗体关闭时退出程序

  jf.setDefaultCloseOperation(3);

  //设置禁止调整窗体的大小

  jf.setResizable(false);

  //实例化一个JTextField文本框类的对象

  //javax.swing.JTextField jteName = new javax.swing.JTextField(20);

  //将jteName添加到容器JFrame上

  //jf.add(jteName);

  //实例化一个布局类对象

  java.awt.GridLayout gr = new java.awt.GridLayout(5,4);

  //设置窗体的布局方式为网格布局

  jf.setLayout(gr);

  //实例化十九个个JButton对象、一个JTextField对象

  javax.swing.JButton jb1 = new javax.swing.JButton("1");

  javax.swing.JButton jb2 = new javax.swing.JButton("2");

  javax.swing.JButton jb3 = new javax.swing.JButton("3");

  javax.swing.JButton jb4 = new javax.swing.JButton("4");

  javax.swing.JButton jb5 = new javax.swing.JButton("5");

  javax.swing.JButton jb6 = new javax.swing.JButton("6");

  javax.swing.JButton jb7 = new javax.swing.JButton("7");

  javax.swing.JButton jb8 = new javax.swing.JButton("8");

  javax.swing.JButton jb9 = new javax.swing.JButton("9");

  javax.swing.JButton jb0 = new javax.swing.JButton("0");

  javax.swing.JButton jba = new javax.swing.JButton("+");

  javax.swing.JButton jbb = new javax.swing.JButton("-");

  javax.swing.JButton jbc = new javax.swing.JButton("*");

  javax.swing.JButton jbd = new javax.swing.JButton("/");

  javax.swing.JButton jbe = new javax.swing.JButton("=");

  javax.swing.JButton jbf = new javax.swing.JButton("AC");

  javax.swing.JButton jbg = new javax.swing.JButton("sqrt");

  javax.swing.JButton jbh = new javax.swing.JButton("1/x");

  javax.swing.JButton jbi = new javax.swing.JButton(".");

  javax.swing.JTextField jte = new javax.swing.JTextField();

  //将JButton对象、JTextField对象添加到容器JFrame上

  jf.add(jte);

  jf.add(jbf);

  jf.add(jbg);

  jf.add(jbh);

  jf.add(jb1);

  jf.add(jb2);

  jf.add(jb3);

  jf.add(jba);

  jf.add(jb4);

  jf.add(jb5);

  jf.add(jb6);

  jf.add(jbb);

  jf.add(jb7);

  jf.add(jb8);

  jf.add(jb9);

  jf.add(jbc);

  jf.add(jb0);

  jf.add(jbi);

  jf.add(jbe);

  jf.add(jbd);

  //设置窗体是否可见

  jf.setVisible(true);

  }

  }