• 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 }
  • 相关阅读:
    VM网络故障问题
    Weblogic无法创建域报段错误排查过程记录
    xmind8 Pro序列号
    vs2015下载地址(安装包丢失或损坏)
    复旦大学数学学院20级高等代数I期中考试大题的高等代数II解法及其推广
    复旦高等代数I(21级)每周一题
    Nginx alias root 和 try_files 基本使用
    Nginx location 和 proxy_pass路径配置详解
    (PMP)第7版
    scheduler源码分析——preempt抢占
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9251821.html
Copyright © 2020-2023  润新知