zoukankan      html  css  js  c++  java
  • JAVA 图形界面开发基础详解

    与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解。

    1.Java提供的图形界面类有哪些?

      Java提供了两套图形界面

      (1)AWT组建(基础)

          AWT组件是jdk1.0的时候推出的图形界面类,它是位于java.awt包下的类。
            当时在开发AWT组件时,采用的语言是C和C++,并且还调用了操作系统底层的绘图函数来实现AWT组件(我们看到的图形界面实际上画出来的)。
            基于语言和底层函数的调用,就导致AWT组件无法实现跨平台性。

      (2)SWING组件(扩展)

          SWING组件是jdk1.4的时候推出的图形界面类,它是位于javax.swing包下的类。

          SWING组件是基于AWT组件的基础上,采用纯Java语言构建一个条新的轻量级跨平台组件。

       AIR富客户端

          JavaFX

    2.常用的组件类和辅助类

      (1)容器组件类:组件上能添加其他的组件,那该组件就是容器组件类。
          JFrame 窗体容器组件类 顶级容器(顶级容器不要相互添加),如果要实现一个图形界面,首先必须要先有一个顶级容器
          JPanel 面板容器组件类 最灵活的容器
     
      (2)元素组件类:一般是用来显示文字、图片或者接收输入信息的就是元素组件类。
          JLabel   标签元素组件类  显示文字或图片,也可以文字图片一起显示
          JTextField  文本输入框元素组件类 接收用户输入的信息,然后将输入信息直接显示
          JPasswordField 密码输入框元素组件类 接收用户输入的信息,然后将输入的每一个字符都用对应的一个符号代替显示
          JButton   按钮元素组件类  显示文字或图片,也可以文字图片一起显示,可以点击
          JComboBox  下拉列边框元素组件类 可以给组件添加多个选项,每次只能选中一个,默认不可以编辑。
          JCheckBox  复选框元素组件类  提供一个选择框,在框后还可以显示文字或图片信息。


         注意:上述的容器组件类和元素组件类都是属于SWING组件中的类,如果要使用这些类,要记得加上类的包名,例如:javax.swing.JFrame。


       (3)辅助类:帮助组件完成某一个特定功能的类。
          java.awt.FlowLayout  流式布局类,流式布局的效果类似于Word文档,但是不能像Word一样回车换行。
          java.awt.BorderLayout 边框布局类,把容器分为五部分,上北下南左西右东中间,每一个部分只能添加一个组件。

          在java.awt包和javax.swing包下所有以Layout结尾的类都是布局类。布局类只能应用在容器组件上。
          java.awt.Dimension  封装组件宽度和高度的类
          javax.swing.ImageIcon 加载图片到程序中的类

    3.界面实现(搭积木的过程)
       (1)定义Login类,在类中定义主函数和初始化界面的方法。
       (2)在主函数中实例化Login类的对象,然后用对象名调用初始化界面的方法。
       (3)在initUI方法中,实例化JFrame窗体容器组件类的对象。
       (4)设置窗体容器组件的属性值:标题、大小、显示位置、关闭操作、禁止调整组件大小、布局、可见。
       (5)实例化元素组件类的对象,添加到窗体上(组件的添加要在窗体可见之前完成)。

     1 package xxj.login;
     2 
     3 import java.awt.BorderLayout;
     4 import java.awt.Dimension;
     5 import java.awt.FlowLayout;
     6 
     7 import javax.swing.ImageIcon;
     8 import javax.swing.JButton;
     9 import javax.swing.JComboBox;
    10 import javax.swing.JFrame;
    11 import javax.swing.JLabel;
    12 import javax.swing.JPanel;
    13 import javax.swing.JTextField;
    14 
    15 /**
    16  * 1.定义Login类,
    17  */
    18 public class Login {
    19 
    20     /**
    21      * 1.在类中定义主函数和
    22      */
    23     public static void main(String[] args) {
    24         // 2.在主函数中实例化Login类的对象,然后用对象名调用初始化界面的方法。
    25         Login login = new Login();
    26         login.initUI();
    27     }
    28 
    29     /**
    30      * 1.初始化界面的方法。
    31      */
    32     public void initUI() {
    33         // 3.在initUI方法中,实例化JFrame窗体容器组件类的对象。
    34         JFrame frame = new JFrame();
    35         // 4.设置窗体容器组件的属性值:标题、大小、显示位置、关闭操作、禁止调整组件大小、布局、可见。
    36         frame.setTitle("Login");// 设置窗体的标题属性值
    37         frame.setSize(380, 320);// 设置窗体的大小属性值,单位是像素
    38         frame.setLocationRelativeTo(null);// 设置窗体显示在屏幕的中央
    39         frame.setDefaultCloseOperation(3);// 设置窗体的关闭操作,3表示关闭窗体退出程序。
    40         frame.setResizable(false);// 设置禁止调整窗体的大小
    41 
    42         /**
    43          * // 实例化FlowLayout流式布局类的对象 FlowLayout fl = new
    44          * FlowLayout(FlowLayout.CENTER, 5, 5); frame.setLayout(fl);//
    45          * 设置窗体的布局方式为流式布局
    46          */
    47 
    48         BorderLayout bl = new BorderLayout();// 实例化BorderLayout边框 布局类的对象
    49         frame.setLayout(bl);// JFrame窗体容器组件默认的布局方式就是BorderLayout边框布局
    50 
    51         // 5.实例化元素组件类的对象,添加到窗体上(组件的添加要在窗体可见之前完成)。
    52 
    53         // 实例化ImageIcon图标类的对象,该对象加载磁盘上的图片到内存中,组件就可以显示ImageIcon的对象
    54         ImageIcon icon = new ImageIcon("这里放图片地址");
    55         // 实例化JLabel标签元素组件类的对象,组件显示icon图标对象
    56         JLabel labIcon = new JLabel(icon);
    57         // 将labIcon添加到窗体的北边
    58         frame.add(labIcon, BorderLayout.NORTH);
    59 
    60         // 实例化JLabel标签元素组件类的对象,组件显示"账号:"文字
    61         JLabel labName = new JLabel("账号:");
    62         // 将labName添加到窗体上
    63         frame.add(labName, BorderLayout.WEST);// 在边框布局中,将组件添加到窗体的西边
    64 
    65 //        // 实例化JLabel标签元素组件类的对象,组件显示"密码:"文字
    66 //        JLabel labPassword = new JLabel("密码:");
    67 //        // 将labPassword添加到窗体上
    68 //        frame.add(labPassword, BorderLayout.SOUTH);// 在边框布局中,将组件添加到窗体的南边
    69 
    70 //        // 实例化JButton标签元素组件类的对象,组件显示"东边:"文字
    71 //        JButton labeast = new JButton("东边:");
    72 //        // 将labeast添加到窗体上
    73 //        frame.add(labeast, BorderLayout.EAST);// 在边框布局中,将组件添加到窗体的东边
    74 
    75         //实例化JPanel面板容器组件类的对象
    76         JPanel centerPane = new JPanel();
    77         centerPane.setLayout(new FlowLayout());
    78         
    79         
    80         JTextField textName = new JTextField();
    81         textName.setPreferredSize(new Dimension(180,30));//此方法不能用于JFrame。
    82         centerPane.add(textName);
    83         
    84         String [] array = {"257037851"};
    85         JComboBox  cbItem = new JComboBox(array);
    86         cbItem.setPreferredSize(new Dimension(180,30));
    87         centerPane.add(cbItem);
    88         
    89         frame.add(centerPane);
    90 
    91         frame.setVisible(true);// 设置窗体为可见,这个是必须写的,且必须在最后,否则会看不到一些组件
    92     }
    93 
    94 }
  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9251821.html
Copyright © 2011-2022 走看看