JavaSE基础(十 二 )---<GUI>标签,文本框,菜单,密码框组件||事件处理,对话框

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE基础(十 二 )---<GUI>标签,文本框,菜单,密码框组件||事件处理,对话框相关的知识,希望对你有一定的参考价值。


1.其他常用组件


在上一段学习容器组件时,只是用了按钮组件来作为功能组件练习的;其他的功能组件还有很多,例如:标签,单行文本框,多行文本框,菜单栏,其它按钮方式.


1.1标签


JLabel
标签是容纳文本和图标的控件,通常用来在界面中标识别的控件。

构造方法

构造方法注释
JLabel( )创建一个空的标签
JLabel(String text)创建一个指定文本的标签
JLabel(Icon image)创建一个指定图像的标签
JLabel(String text, Icon icon, int horizontalAlignment)创建指定文本,图像;且水平对齐的标签

方法

返回值方法及注释
voidsetText(String text) 设置标签上的文本
StringgetText() 获得标签上的文本
voidsetVisible(boolean b) 设置标签是否为可见
voidsetFont(font f); 设置字体

可以在设置字体时,创建Font对象;传入参数;可设置字体名,格式,尺寸
Font类的一个构造方法

  • Font(String name, int style, int size)

设置一个文本标签执行效果:

在这里插入图片描述


1.2单行文本框


单行文本(JTextField)

使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息。

构造方法

构造方法注释
JTextField( )创建一个默认单行文本框
JTextField(String text )创建一个指定初始化文本信息的文本框。
JTextField(int columns)创建一个指定列数(宽度)的文本框
JTextField(String text, int columns)创建一个指定列数且指定初始化文本信息的文本框

方法

返回值方法及注释
voidsetText(String text)
DimensiongetPreferredSize( )获得文本框的首选大小
voidscrollRectToVisible(Rectangle r) 向左或向右滚动文本框中的内容
StringgetText( ) 获得文本框中的文本
voidsetEditable(boolean b) 设置文本框是否可以编辑
voidsetVisible(boolean b) 设置文本框是否为可见
voidsetColumns(20);设置文本框列数(宽度)
voidsetFont(Font f) 设置文本框的字体
voidsetHorizontalAlignment(int alignment) 设置文本框内容的水平对齐方式
voidsetScrollOffset(int scrollOffset) 设置文本框的滚动偏移量(以像素为单位)

效果:

在这里插入图片描述


1.3多行文本框


多行文本框(JTextArea)
它允许用户输入多行的文本信息

构造方法

构造方法注释
JTextArea( )创建一个空文本域
JTextArea(String text)创建一个指定文本初始化文本域
JTextArea(int rows, int columns)创建一个指定行数和列数的空文本域
JTextArea(String text,int rows, int columns)创建一个指定行数和列数的且指定文本初始化文本域

方法

返回值方法及注释
voidsetText(String text) 设置文本域中的文本
StringgetText( ) 获取文本域中的文本
voidsetFont(Font font) 设置文本域中输入文本的字体
voidsetLineWrap(boolean wrap) 设置是否可以自动换行,默认是不换行的–false
voidsetWrapStyleWord(boolean word) 设置是否以单词边界换行,默认是false

效果:

在这里插入图片描述


多行文本框JTextArea加滚动条

注意到;多行文本虽然设置自动换行;但是随着文本的数量增加,文本域的空间也自动扩展;可能会占用到其他组件的空间;所以可以设置上下滚动条;

  • 将文本区对象放入滚动窗格(JScrollPane)中:
    JScrollPane scrollPane = new JScrollPane(txtArea);
    add(scrollPane );

滚动窗格的效果:

在这里插入图片描述


1.4密码框


密码框(JPasswordField)

容纳字符串的控件

构造方法

构造方法注释
JPasswordField( )创建一个密码框
JPasswordField(String text)创建一个指定初始化密码的密码框
JPasswordField(String text)创建一个指定列数的密码框
JPasswordField(String text, int columns)创建一个指定列数且指定初始化密码的密码框

方法

返回值方法及注释
char[ ]getPassword( )获得输入的密码;(注意返回值为char数组,可使用String类的valueof方法转为字符串)

效果:

在这里插入图片描述


1.5按钮组件


按钮(JButton)
设置一个按钮

构造方法:

构造方法注释
JButton( )创建一个没有设置文本或图标的按钮。
JButton(String text)创建一个带文本的按钮
JButton(Icon image)创建一个带图标的按钮
JButton(String text, Icon icon)创建一个带有初始文本和图标的按钮

方法

返回值方法及注释
voidsetText(String text) 设置按钮上的文本
StringgetText() 获得按钮上的文本
voidsetBackground(Color bg) 设置按钮的背景色
ColorgetBackground() 获得按钮的背景色
voidsetEnabled(boolean b) 设置启用(或禁用)按钮,true启用,false禁用
voidsetVisible(boolean b) 设置按钮是否为可见;true可见,false不可见
voidsetToolTipTextString text) 设置按钮的悬停提示信息

效果:

在这里插入图片描述


1.6菜单栏,菜单,菜单项


在菜单栏中包含菜单;菜单项中包含菜单项;菜单项实现具体功能.

菜单栏组件JMenuBar
菜单组件JMenu
菜单项组件JMenuItem

将菜单栏添加到窗口使用方法是setJMenuBar(menuBar)
将菜单添加到菜单栏;将菜单项添加到菜单,都是使用add方法

代码演示:

import javax.swing.*;
//在创建窗口时,可以选择直接使用JFrame类的对象;或者新建一个类去继承JFrame类;
public class FlowLayoutDemo01 extends JFrame{
    //main主方法
    public static void main(String[] args) {
        FlowLayoutDemo01 jfd1=new FlowLayoutDemo01();//在创建窗口后,窗口默认不可见;
        jfd1.setVisible(true);//设置窗口为可见的,
        jfd1.setJFrame();//调用设置窗口的方法;
    }
    //定义一个设置窗口属性的方法;
    public void setJFrame(){
        this.setSize(600,500);//设置窗口的大小;
        this.setTitle("容器组件JFrame:");//设置窗口标题;
        this.setLocationRelativeTo(null);//可设置窗口居中;
        this.setResizable(false);//设置用户不可以调整窗口大小;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT_ON_CLOSE;窗口关闭时,程序也自动关闭掉;

        JMenuBar jbr=new JMenuBar();//创建菜单栏;
        JMenu jMenu0=new JMenu("JavaSE");//创建菜单"JavaSE";
        JMenu jMenu1=new JMenu("数据结构");//创建菜单"数据结构";
        JMenuItem jMenuItem0=new JMenuItem("面向对象");//创建菜单栏;
        JMenuItem jMenuItem1=new JMenuItem("IO流");//创建菜单栏;
        JMenuItem jMenuItem2=new JMenuItem("队列");//创建菜单栏;
        JMenuItem jMenuItem3=new JMenuItem("树");//创建菜单栏;

        //将菜单项添加到菜单;
        jMenu0.add(jMenuItem0);
        jMenu0.add(jMenuItem1);
        jMenu1.add(jMenuItem2);
        jMenu1.add(jMenuItem3);
        //将菜单添加到菜单栏;
        jbr.add(jMenu0);
        jbr.add(jMenu1);
        //将菜单栏添加到窗口;
        this.setJMenuBar(jbr);
    }
}

效果:

在这里插入图片描述



2.事件处理


前面学习的容器组件和其他组件;但是只是完成了用户界面的静态效果,并没有实际的功能;比如说按钮虽然可以点击;但是并没有实际作用;文本框可以写入内容;但是没有接收的位置.
想要实现具体的功能,就需要用到事件处理将这些组件,窗口与窗口之间联系起来.

事件处理是指对系统中任意发生的一个活动调用有关程序或例程进行处理,使系统正常运行。 事件处理是指对系统中任意发生的一个活动调用有关程序或例程进行处理。 主要目的是使系统正常运行。 在操作系统,事件处理是经常发生的,因此,事件处理的类型有很多,例如中断是由于系统中某事件引起的,对中断进行处理就是一种事件处理以及进程的调度也是一种事件处理。

事件处理架构一般由四个不同的实体组成:
(1) 事件源:产生的事件通常是原子事件,但也有可能是高层次的事件。
(2) 事件建模器:定义了事件模式。这些事件模式在事件处理媒介中处理。
(3)事件处理媒介:用于处理事件的平台 (可能是分布式的) ,提供通道访问来自事件源的事件数据,并把处理结果输出给事件消费者。事件处理媒介为事件的选择、聚合、层次结构内的分类、更高层次事件的抽象提供技术架构。事件处理媒介可能是单一的 EPA(单独的事件处理组件),也可能是一个包含了一组 EPA 的分布式事件处理网络。
(4) 事件消费者:接收来自事件处理媒介的复杂事件并通过反应规则对其响应。事件消费者可能会产生新的事件而作为事件源。
目前复杂(complexevent process,CEP _解决方案供应商提出了几个具体的 CEP 的参考架构。一些参考架构与具体实施技术关联性不强,而另一些基于具体的解决方案和技术之上。特定领域的参考模型和元模型也已被提出。 实际架构的某些技术选择, 不是由要求本身所决定,而是由当时可选择的技术所决定。


事件处理过程:

  • 一个源(事件源)产生一个事件(事件对象)并把它送到监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;
  • 一个事件源(GUI组件)必须注册监听器以便监听器可以接受关于一个特定事件的通知。

例如处理按钮的点击事件,这时;按钮便是事件源;
监听器类型是ActionListener。
使用匿名内部类的方式添加监听器:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//在创建窗口时,可以选择直接使用JFrame类的对象;或者新建一个类去继承JFrame类;
public class FlowLayoutDemo01 extends JFrame{
    public static void main(String[] args) {
        FlowLayoutDemo01 jfd1=new FlowLayoutDemo01();//在创建窗口后,窗口默认不可见;
        jfd1.setVisible(true);//设置窗口为可见的,
        jfd1.setJFrame();//调用设置窗口的方法;
    }
    //定义一个设置窗口属性的方法;
    public void setJFrame(){
        this.setSize(600,500);//设置窗口的大小;
        this.setTitle("容器组件JFrame:");//设置窗口标题;
        this.setLocationRelativeTo(null);//可设置窗口居中;
        this.setResizable(false);//设置用户不可以调整窗口大小;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT_ON_CLOSE;窗口关闭时,程序也自动关闭掉;

        JPanel jpl=new JPanel();//创建面板组件;

        JButton LoginJButton=new JButton("登录");//创建按钮;
        //使用匿名内部类的方式为按钮添加监听器;
        LoginJButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("登录");
            }
        });
        
        jpl.add(LoginJButton);//将登录按钮添加到面板上;
        this.add(jpl);//将面板添加到窗口上;

    }
}

效果:
点击登录按钮;在控制台有输出;

在这里插入图片描述


2.1鼠标监听事件处理


就以按钮为例,
使用方法 addMouseListener( )

这里主要学习两个监听器;

(1)首先使用这个 接口 MouseListener监听器;
这个接口的底层是定义了5种鼠标的状态抽象方法;

public void mouseClicked(MouseEvent e); 鼠标点击时;(长按后释放鼠标算一次点击)
public void mousePressed(MouseEvent e);长按鼠标时;
public void mouseReleased(MouseEvent e); 释放鼠标时;
public void mouseEntered(MouseEvent e);鼠标移入组件时;
public void mouseExited(MouseEvent e);鼠标移出组件时;

那么;在使用这个监听器时;就必须重写这5个抽象方法;

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//在创建窗口时,可以选择直接使用JFrame类的对象;或者新建一个类去继承JFrame类;
public class FlowLayoutDemo02 extends JFrame{
    public static void main(String[] args) {
        FlowLayoutDemo02 jfd1=new FlowLayoutDemo02();//在创建窗口后,窗口默认不可见;
        jfd1.setVisible(true);//设置窗口为可见的,
        jfd1.setJFrame();//调用设置窗口的方法;
    }
    //定义一个设置窗口属性的方法;
    public void setJFrame(){
        this.setSize(600,500);//设置窗口的大小;
        this.setTitle("鼠标监听事件处理");//设置窗口标题;
        this.setLocationRelativeTo(null);//可设置窗口居中;
        this.setResizable(false);//设置用户不可以调整窗口大小;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT_ON_CLOSE;窗口关闭时,程序也自动关闭掉;

        JPanel jpl=new JPanel();//创建面板组件;

        JButton LoginJButton=new JButton("登录");//创建按钮;
        //为按钮添加鼠标监听器1号;由于这个接口中定义了5种抽象方法,所以使用时必须重写;
       LoginJButton.addMouseListener(new MouseListener() {
           //鼠标点击时;
           @Override
           public void mouseClicked(MouseEvent e) {
               System.out.println("鼠标点击了");
           }
           //长按鼠标时;
           @Override
           public void mousePressed(MouseEvent e) {
               System.out.println("鼠标长按了");
           }
           //释放鼠标时;
           @Override
           public void mouseReleased(MouseEvent e) {
               System.out.println("释放鼠标");
           }
           //鼠标移入组件;
           @Override
           public void mouseEntered(MouseEvent e) {
               System.out.println("鼠标移入");
           }
           //鼠标移出;
           @Override
           public void mouseExited(MouseEvent e) {
               System.out.println("鼠标移出");
           }
       });

        jpl.add(LoginJButton);//将登录按钮添加到面板上;
        this.add(jpl);//将面板添加到窗口上;
    }
}

(2)使用抽象类 MouseAdapter 监听器;
这个抽象类;底层实现了接口 MouseListener;以及别的接口;所以在调用时;可根据需要去重写需要的鼠标事件处理功能;

public abstract class MouseAdapter implements MouseListener, MouseWheelListener, MouseMotionListener

JButton LoginJButton=new JButton("登录");//创建按钮;
        //为按钮添加鼠标监听器2号;这是个抽象类;底层实现了接口 MouseListener;
        //所以在调用时;可根据需要去重写需要的鼠标事件处理功能;
       LoginJButton.addMouseListener(new MouseAdapter() {
           //长按鼠标
           @Override
           public void mousePressed(MouseEvent e) {
               System.out.println("长按鼠标");
           }
       });

2.2对话框


在图形用户界面中,对话框(又称对话方块)是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为“对话框”是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的输入,或者两者皆有。
不同的用户交互使用不同的对话框。最简单的对话框是警告,它显示一个信息并且仅仅需要一个信息已读的响应(通常是单击’确定’按钮或“关闭”命令的对话框)。用来为一个操作提供警告和简单的确认,也可能包括程序终止或崩溃的提示,以及用户有意或无意的关闭动作。虽然对于有模式对话框来说,这是个经常性的交互模式,但是由于它被认为在防止非预期的破坏性操作上不够有效以及存在更好的替换方案而遭到可用性专家的批评。显示一般提示信息的对话框,可以设计为提示气泡等形式来避免打断用户操作。

使用 JOptionPane


2.2.(1)消息框


消息框是一种预制的模式对话框 ,用于向用户显示文本消息。


使用方法showMessageDialog
这个方法没有返回值;
这个方法有4个参数:

参数注释
parentComponent对话框所在的容器;可以设置null;
message提示的消息
title标题 ;不写时默认为"消息"
messageType消息类型图标

图标messageType有五种参数:

图标参数注释
ERROR_MESSAGE错误消息提示
INFORMATION_MESSAGE信息提示
WARNING_MESSAGE警告提示
QUESTION_MESSAGE问题提示
PLAIN_MESSAGE简洁提示

在刚才的第二种鼠标监听器MouseAdapter中使用消息对话框.

JButton LoginJButton=new JButton("登录");//创建按钮;
        //为按钮添加鼠标监听器2号;这是个抽象类;底层实现了接口 MouseListener;
        //所以在调用时;可根据需要去重写需要的鼠标事件处理功能;
       LoginJButton.addMouseListener(new MouseAdapter() {
           //点击鼠标时;
           @Override
           public void mouseClicked(MouseEvent e) {
           //消息框;
           //设置存放容器为无;|提示消息;|标题为:消息框标题;|图标为:警告图标|
           JOptionPane.showMessageDialog(null,"提示的消息","消息框标题",JOptionPane.WARNING_MESSAGE);
           }
       });

效果:点击按钮后;

在这里插入图片描述


2.2(2)确认框


确认框是一种预制的模式对话框 ,用于将用户的选择返回后台.


使用方法showConfirmDialog;这个方法有int返回值;

选项或操作返回值
是(确定)0
1
取消2
关闭确认框-1

这个方法有4个参数:

参数注释
parentComponent对话框所在的容器;可以设置null;
message提示的消息
title标题 ;不写时默认为"选择一个选项"
messageType选项按钮,(不写时默认为YES_NO_CANCEL_OPTION 是/否/取消选项)

这个messageType有四种

按钮注释
DEFAULT_OPTION默认选项
YES_NO_OPTION是/否选项
YES_NO_CANCEL_OPTION是/否/取消选项
OK_CANCEL_OPTION确定/取消

在刚才的第二种鼠标监听器MouseAdapter中使用确认对话框.
JButton LoginJButton=new JButton("登录");//创建按钮;
        //为按钮添加鼠标监听器2号;这是个抽象类;底层实现了接口 MouseListener;
        //所以在调用时;可根据需要去重写需要的鼠标事件处理功能;
       LoginJButton.addMouseListener(new MouseAdapter() {
           //点击鼠标时;
           @Override
           public void mouseClicked(MouseEvent e) {
       //确认框;
       //设置存放容器为无;|提示消息;|标题为:确认框标题;|选项为:确定,取消|
       int result=JOptionPane.showConfirmDialog(null,"您确定要删除嘛?","确认框标题",JOptionPane.OK_CANCEL_OPTION);
       //将确认框的选择;返回出来;
       System.out.println(result);
           }
       });

效果:点击按钮后;点击确定按钮:返回0;

在这里插入图片描述

在这里插入图片描述


以上是关于JavaSE基础(十 二 )---<GUI>标签,文本框,菜单,密码框组件||事件处理,对话框的主要内容,如果未能解决你的问题,请参考以下文章

javaSE第二十五天

零基础自学javase黑马课程第十五天

十. 图形界面(GUI)设计3.标签按钮和按钮事件

HTML基础

JavaSE7基础 八十十六进制的表示方法

C1认证之web基础知识及习题——我的学习笔记