JavaGui超详细笔记——Gui概念、Swing概述、容器组件、布局管理器、常用组件、事件处理、对话框、内部类

文章目录

  • 一、GUI概念
  • 二、Swing概述
  • 三、容器组件
  • 四、布局管理器
  • 五、常用组件
    • 1、标签
    • 2、单行文本
    • 3、多行文本框
    • 4、密码框
    • 5、按钮
    • 6、菜单栏组件
    • 7、菜单组件
    • 8、菜单项组件
    • 9、将菜单栏添加到窗口
  • 六、事件处理
  • 七、对话框
  • 八、内部类

一、GUI概念

GUI即图形用户界面,它能够使应用程序看上去更加友好。

二、Swing概述

1、swing是纯java组件,使得应用程序在不同的平台上运行时具有相同外观和相同行为。

2、swing中的大部分组件类位于javax.swing包中。

JavaGui超详细笔记——Gui概念、Swing概述、容器组件、布局管理器、常用组件、事件处理、对话框、内部类_第1张图片

三、容器组件

1、java的图形用户界面的基本组成部分是组件。

2、组件不能独立显示出来,必须将组件放在容器中才能显示,容器可以容纳多个组件(调用容器的add方法)。

3、最常用的两个容器是窗口(Frame)和面板(Panel)。

窗口:

构造方法:

JFrame() 创建新窗体,该窗体初始为不可见
JFrame(String title) 创建新窗体,使用参数title指定标题,该窗体初始为不可见

方法:

void setSize(int width, int height)//设置窗体大小
void setVisible(boolean b)//可视化
void setTitle(String title)//设置窗体标题
void setResizable(boolean resizable)//设置窗体大小是否可变
void setLocation(int x,int y)//设置窗体位置
void setLocationRelativeTo(null);//设置窗体在中间显示
void setDefaultCloseOperation(int operation)//设置关闭窗体后的操作
void dispose()//释放窗体

面板:

面板中可以添加其它组件,也可以设置布局,一般用面板来实现布局嵌套

构造方法:

JPanel() 创建一个空面板
JPanel(LayoutManaer layout) 创建带有指定布局的面板

JFrame内部包含一个名叫Container的面板容器,如果要给框架中添加图形控件,通常将他们加入到这个内容面板中。

常用方法:
void setBackground(Color bg)设置面板的背景色,由参数bg指定颜色
void setLayout(LayoutManager mgr)设置面板的布局,参数是布局管理器
Component add(Component comp)往面板中添加一个组件

四、布局管理器

每个Jpanel都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Jpanel的setLayout方法改变其布局管理器对象或通过构造方法设置。

Java中有几种常用的布局管理器,分
别是:FlowLayout , BorderLayout, GridLayout。
JavaGui超详细笔记——Gui概念、Swing概述、容器组件、布局管理器、常用组件、事件处理、对话框、内部类_第2张图片

1、FlowLayout

流式布局管理器,将组件按照从左到右、从上到下的顺序来安排,并在默认情况下使组件尽量居中放置。
this.setLayout(new FlowLayout());
this.add(new Button(“确定”));
this.add(new Button(“取消”));

流式布局管理器不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式。

构造方法:
new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,垂直间距40个像素。
new FlowLayout(FlowLayout.LEFT);左对齐,水平和垂直间距为缺省值(5)。
new FlowLayout();使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)。

2、BorderLayout

只允许在容器内放置5个组件,位置是由BorderLayout类中的North、South、East、West和Center5个常量来确定的,对应容器中的上下左右中。

this.add(new Button(“按钮”) ,BorderLayout.NORTH);
this.add(new Button(“按钮”) ,BorderLayout.CENTER);

如不指定组件的加入部位,则默认加入到CENTER区。

3、GridLayout

GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下。

用法:

this.setLayout(new GridLayout(2 , 3)); //创建一个2行3列的网格
this.add(new Button(“按钮”));
当组件数目大于网格数时,GridLayout保持行数不变而自动增加列数。

五、常用组件

1、标签

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

构造函数:
JLabel() 创建一个空的标签
JLabel(String text) 创建一个带文本的标签
JLabel(Icon image) 创建一个带图像的标签
方法:
void setText(String text) 设置标签上的文本
String getText() 获得标签上的文本
setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体

2、单行文本

JTextField的构造函数:
JTextField()
JTextField(String text )
JTextField(int columns)
JTextField(String text, int columns)
方法:
void setText(String text) 设置文本框中的文本
String getText() 获得文本框中的文本
void setEditable(boolean b) 设置文本框是否可以编辑
setColumns(20); 设置列数

3、多行文本框

多行文本框(JTextArea)
构造函数:
JTextArea() 创建一个空的文本域
JTextArea(String text) 用指定文本初始化文本域
JTextArea(int rows, int columns) 创建一个指定行数和列数的空文本域
JTextArea(String text,int rows, int columns) 创建一个带文本,并指行数和列数的
方法:
void setText(String text) 设置文本域中的文本
String getText() 获得文本域中的文本
void setFont(Font font) 设置文本域中文本的字体
void setLineWrap(boolean wrap) //是否自动换行,默认false
需要出现滚动条使用JScrollPane滚动窗格:
JScrollPane scrollPane = new JScrollPane(txtArea);
jpanel.add(scrollPane);

4、密码框

构造函数:
JPasswordField()
JPasswordField(String text)
JPasswordField(String text, int columns)
方法:
char[] getPassword(

5、按钮

构造方法:
JButton(String text) 创建一个带文本的标签
JButton(Icon image) 创建一个带图像的标签
方法:
void setBackground(Color bg) 设置按钮的背景色
void setEnabled(boolean b) 设置启用(或禁用)按钮,由参数b决定
void setToolTipText(String text) 设置按钮的悬停提示信息

6、菜单栏组件

构造方法:JMenuBar();
方法:add(menu); 向菜单栏添加菜单

7、菜单组件

构造方法:JMenu(“菜单名称");
方法:add(menuItem); 向菜单添加菜单选项

8、菜单项组件

构造方法:JMenuItem(“菜单项名称");

9、将菜单栏添加到窗口

setJMenuBar(menuBar);

六、事件处理

用户与GUI组件进行交互会发生事件,如:按下一个按钮、用键盘输入一个字符、点击鼠标等。

添加事件监听器(此处即为匿名类)
按钮对象.addActionListener(new ActionListener() {
// 事件处理
@Override
public void actionPerformed(ActionEvent e) {
执行操作
}
});

七、对话框

JOptionPane对话框:

1、showMessageDialog():消息对话框
主要有五种消息类型,类型不同,图标不同:
ERROR_MESSAGE 错误消息提示
INFORMATION_MESSAGE 信息提示
WARNING_MESSAGE 警告提示
QUESTION_MESSAGE 问题提示
PLAIN_MESSAGE 简洁提示
2、showConfirmDialog():确认对话框
主要有四种消息类型,类型不同,图标不同:
DEFAULT_OPTION 默认选项
YES_NO_OPTION 是/否选项
YES_NO_CANCEL_OPTION 是/否/取消选项
OK_CANCEL_OPTION 确定/取

八、内部类

1、在一个类的内部定义的类称为内部类

2、分类:成员内部类、静态内部类、局部内部类、匿名内部类

①.成员内部类:

定义:就是位于外部类成员位置的类。

特点:在内部类中可以直接使用外部类的成员,即使是私有的

②.静态内部类:

定义:被 static 所修饰的内部类

特点:静态内部类,只能访问外部类中的静态成员

③.局部内部类:

定义:定义在方法或作用域里面的类。

特点:只能在自身所在方法和属性中被使用

④.匿名内部类:

定义:一个没有名字的类

Arrays.sort(cars, new Comparator<Car>(){
@Override
public int compare(Car o1, Car o2){
return o1.getNum()-o2.getNum();
}
});

3、内部类的特点:

①.是一个独立的类,会被编译成独立的.class文件,名字是外部类的类名和$符号。

②.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否为 private的。

③.静态内部类只能访问外部类的静态成员变量。

4、内部类的意义:

①.封装性

②.实现多继承

你可能感兴趣的:(java,开发语言)