图形用户界面设计

一、图形界面设计步骤

1、选择容器
2、确定布局
3、添加组件
4、事件处理

二、容器

1.容器分为两类

内部容器和外部容器。外部容器是可以独立存在的,如Frame;而内部容器一般嵌套在外部容器或其他内部容器中使用,如Panel类。

2.容器的功能:

1)管理组件。容器类提供了一组用于管理组件的方法,如可以使用容器类提供
add()方法向容器中添加组件;
remove()方法移除组件;
paintComponents()方法绘制组件;
getComponent()方法获取组件;
printComponents()方法打印组件等。
2)设置布局。每个容器都和一个布局管理器相关联,用以确定组件在容器中的布局。可以通过setLayout()方法为容器设置一种布局。

三、布局

1.flowlayout

是将各个组件按照添加的顺序,从左到右、从上到下进行放置,如果本行放不下所有组件,则放入下一行。Panel容器的默认布局就是FlowLayout布局。

2.Borderlayout

类似与地图上的方向,用东、西、南、北、中来安排组件的布局,分别用EAST、WEST、SOUTH、NORTH和CENTER来代表各个方向,以上北下南、左西右东占据界面的四边,CENTER占据剩余中间部分。Frame容器的默认布局就是BorderLayout布局。

3.Grildlayout

是一种网格布局,将容器划分成若干行和列的结构,在各个网格中放置组件。在网格布局中的各个组件具有相同的宽和高,其放置顺序也是从左向右开始填充,一行占满后开始填充下一行,仍然是从左到右的顺序。

4.Cardlayout

是一种卡片式的布局管理,这些卡片层叠在一起,每层放置一个组件,每次只有最外层的组件露出来。每层也可以采用面板来实现复杂的布局。

四、组件

AWT:
标签 按钮 下拉式菜单 文本框 文本区 列表 复选框 复选框组 画布 菜单 对话框 文件对话框
Swing:
标签 按钮 菜单 面板 滑动窗口 选项版 工具栏 复选框 单选框 选择框 进度条 滑动条 表格 树

Swing常用组件与容器

五、事件监听器/适配器

当一个事件源产生一个事件时,只有为事件源注册了处理该类事件的监听器,应用程序才能对用户的操作做出响应。根据事件类型的不同,处理每类事件的监听器也有所差别。一个事件监听器可以处理一类事件,要使监听器具有处理某一类事件的能力,就需要让监听器实现响应的事件监听器接口,即一个监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。
在编写监听器类时,可以采用实现监听器接口的方式;也可以采用继承适配器类的方式;还可以使用匿名内部类或Lambda表达式来完成这项工作。

六、样例

package com.ascent.ui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class RegistFrame extends JFrame
{
	protected JLabel tip;
	public RegistFrame()
	{

		JPanel RegistPanel=new JPanel();

		setTitle("用户注册");
		Container container = this.getContentPane();
		container.setLayout(new BorderLayout());


		JButton normaluser = new JButton("普通用户注册");
		JButton superuser=new JButton("管理员注册");
		JButton exitButton = new JButton("退出");

		RegistPanel.add(normaluser);
		RegistPanel.add(superuser);
		RegistPanel.add(exitButton);

		setResizable(false);
		setSize(260, 150);
		setLocation(300, 100);
		exitButton.addActionListener(new ExitActionListener());
		superuser.addActionListener(new SuperActionListener());
		normaluser.addActionListener(new NormalActionListener());

		JPanel tipPanel = new JPanel();

		tip = new JLabel();

		tipPanel.add(tip);
		container.add(BorderLayout.CENTER, RegistPanel);
		container.add(BorderLayout.NORTH, tip);

	}
	/**
	 * 处理"退出"按钮事件监听的内部类
	 */
	class ExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			setVisible(false);
			dispose();
		}
	}

	class NormalActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			// 打开注册用户的窗口
			Normalregist normalregist= new Normalregist();
			normalregist.setVisible(true);
		}
	}

	class SuperActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			// 打开注册用户的窗口
			Superregist superregist = new Superregist();
			superregist.setVisible(true);
		}
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值