11.GUI编程(含内部类说明)

ThisarticledelvesintoSwingGUIprogramminginJava,coveringcomponents,containerusage,layoutmanagerslikeFlowLayout,BorderLayout,andGridLayout,eventhandling,dialogboxes,andnestedclasses.
摘要由CSDN通过智能技术生成

GUI(Graphical User Interface)即图形用户界面,是指采用图形方
式显示的用户界面,与早期计算机使用的命令行界面相比,图形界面对
于用户来说在视觉上更易于接受。

swing概述

● swing 是一个为Java设计的GUI工具包javax.swing,该包中包括了图形用户界面的各种组件支持。
● 一个 Java 的图形界面,由各种不同类型的“元素”组成,这些“元素”被称为组件(Component)。
● swing中的组件可以分为两大类:容器(如窗口,对话框,面板)和功能组件(如按钮,输入框,菜单等).
● 它们的区别主要是在概念上的。因为每个容器也都是组件。
● 容器是一种可以包含组件的特殊组件

容器组件

容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容
器中添加组件。
窗口(JFrame)和面板(JPanel)是最常用的两个容器

JFrame设置窗体的常用方法
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面板对象,把JPanel作为一个组件添加到窗口或某个面板中.

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

布局管理器在这里插入图片描述

Java中的图形界面在布局管理上采用容器和布局管理相分离的方案,也
就是说容器只是把组件放进来,但它不管怎样放置。至于如何放置需要
用到布局管理器(Container) 。
Java中有几种常用的布局管理器,分别是:FlowLayout , BorderLayout, GridLayout。

FlowLayout

FlowLayout布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排,并在默认情况下使组件尽量居中放置。
this.setLayout(new FlowLayout());
this.add(new Button(“确定”));
this.add(new Button(“取消”));
FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。
不改变组件的大小,按组件原有尺寸显示组件,可设置不 同的组件间距,行距以及对齐方式。
构造方法
new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,垂直间距40个像素。
new FlowLayout(FlowLayout.LEFT);左对齐,水平和垂直间距为缺省值(5)。
new FlowLayout();使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)。

BorderLayout

BorderLayout布局管理器只允许在容器内放置5个组件,这5个组件的位置是由BorderLayout类中的North、South、East、West和Center5个常量来确定的,他们对应着容器中的上下左右中,用法如下:

this.add(new Button(“按钮”) ,BorderLayout.NORTH);
this.add(new Button(“按钮”) ,BorderLayout.CENTER);
组件在BorderLayout中的大小都是可以改变的。一般情况下可以让中间区域大一些,而且可以只用其中几个区域。

● BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中
(CENTER)五个区域,组件只能被添加到指定的区域。
● 如不指定组件的加入部位,则默认加入到CENTER区。
● 每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。
● BorderLayout型布局容器尺寸缩放原则:
● 北、南两个区域在水平方向缩放。
● 东、西两个区域在垂直方向缩放。
● 中部可在两个方向上缩放。

GridLayout

● GridLayout布局管理器是矩形网格,在网格中放置组件,每个网格的高度和宽度都相等,组件随着网格的大小而在水平和垂直方向上拉伸,网格的大小是由容器的大小和创建网格的多少来确定的。其用法如下:

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

● GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。
组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下。
● 在 GridLayout 构造方法中指定分割的行数和列数.

常用组件

标签(JLabel)
标签是容纳文本和图标的控件,通常用来在界面中标识别的控件。
构造函数:
JLabel() 创建一个空的标签
JLabel(String text) 创建一个带文本的标签
方法:
void setText(String text) 设置标签上的文本
String getText() 获得标签上的文本
setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体

单行文本(JTextField)
JTextField的构造函数:
JTextField(int columns)
方法:
void setText(String text) 设置文本框中的文本
String getText() 获得文本框中的文本

多行文本框(JTextArea)
构造函数:
JTextArea(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);
add(scrollPane );

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

菜单栏组件:
构造方法:JMenuBar();
方法:add(menu); 向菜单栏添加菜单
菜单组件:
构造方法:JMenu(“菜单名称");
方法:add(menuItem); 向菜单添加菜单选项
菜单项组件:
构造方法:JMenuItem(“菜单项名称");
将菜单栏添加到窗口:setJMenuBar(menuBar);

事件处理

Java中,事件处理的基本思路如下:
一个事件源产生一个事件并把它送到监听器那里,监听器一直等待,直
到它收到一个事件,一旦事件被接受,监听器将处理这些事件;
在这里插入图片描述
添加事件监听器(此处即为匿名类)
按钮对象.addActionListener(new ActionListener() {
// 事件处理
@Override
public void actionPerformed(ActionEvent e) {
执行操作
}
});

对话框

JOptionPane对话框
showMessageDialog():消息对话框

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

内部类

● 把类定义在另一个类的内部,该类就被称为内部类。
● 如果在类 Outer 的内部再定义一个类 Inner,此时类 Inner 就称为内部类
(或称为嵌套类),而类 Outer 则称为外部类(或称为宿主类)。

内部类——就是位于外部类成员位置的类
特点:可以使用外部类中所有的成员变量和成员方法(包括private的)
class Outer {
private int age = 20;
class Inner {
public void show() {
System.out.println(age);
}
}
}

● 内部类仍然是一个独立的类,在编译之后内部类会被编译成独立
的.class文件,但是前面冠以外部类的类名和$符号。
● 内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部
类可以自由地访问外部类的成员变量,无论是否为 private 的

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值