黑马程序员——图形化界面

---------------------- android培训、java培训、期待与您交流! ----------------------

在java中用于设计图形化界面的两个包分别是:AWT和Swing

AWT需要调动本地系统方法实现功能,属于重量级控件。

Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现。增强了移植性,属于轻量级控件。

Container是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

常见的布局管理器:
FlowLayout(流式布局管理器)->从左到右的顺序排列。Panel默认的布局管理器。
BorderLayout(边界布局管理器)->东、南、西、北、中。Frame默认的布局管理器
GridLayout(网格布局管理器)->规则的矩形
CardLayout(卡片布局管理器)->选项卡
GridBagLayout(网格包布局管理器)->非规则矩形

import java.awt.*;
public class GuiTest {
	public static void main(String[] args) {
		Frame f=new Frame();
		f.setBounds(300,300,300,300);
		f.setLayout(new FlowLayout());
		TextField tf=new TextField(10);
		Button b=new Button("->");
		TextArea ta=new TextArea(8,9);
		f.add(tf);
		f.add(b);
		f.add(ta);
		f.setVisible(true);
	}
}
上面程序只是设计一个图形,没有任何效果。只有关闭程序图形化界面才会关闭。要想有效果就要运用到事件监听器。

事件监听机制:所谓的事件监听机制就是在组件上安装一个监听装置,当触发这个组件时,组件产生相应的事件并将事件对象传给了监听装置,监听装置给出了相应的处理。就相当于在防盗门上安装了报警器,当去撬门时,撬门这个事件给了报警器,报警器发出报警信号。如下图所示:

将上面程序做如下修改

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GuiTest {
	public GuiTest(){
		init();
	}
	public static void main(String[] args) {
		new GuiTest();
	}
	private static void init() {
		Frame f=new Frame();
		f.setBounds(300,300,300,300);
		f.setLayout(new FlowLayout());
		TextField tf=new TextField(10);
		Button b=new Button("->");
		TextArea ta=new TextArea(8,9);
		f.add(tf);
		f.add(b);
		f.add(ta);
		f.addWindowListener(new MyWindowClose());	//安装监听装置
		f.setVisible(true);
	}
}
class MyWindowClose extends WindowAdapter{

	@Override
	public void windowClosing(WindowEvent e) {
		System.exit(0);
	}	
}
运行后图形化界面只要点击窗口叉号,界面即可关闭。

FileDIalog:用这个类显示的是一个文件对话框窗口,它有两个字段来显示对话框模式分别是LOAD(作用是查找的要读的文件)、SAVE(查找要写的文件)。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GuiTest {
	private Frame f;
	private MenuBar mb;
	private Menu m;
	private MenuItem mi1,mi2;
	private FileDialog fg;
	public GuiTest(){
		init();
	}
	public static void main(String[] args) {
		new GuiTest();
	}
	private  void init() {
		f=new Frame();
		mb=new MenuBar();
		m=new Menu("文件");
		mi1=new MenuItem("保存");
		mi2=new MenuItem("打开");
		m.add(mi1);
		m.add(mi2);
		mb.add(m);
		f.setBounds(300,300,300,300);
		f.setLayout(new FlowLayout());
		TextField tf=new TextField(10);
		Button b=new Button("->");
		TextArea ta=new TextArea(8,9);
		f.add(tf);
		f.add(b);
		f.add(ta);
		f.setMenuBar(mb);
		event();
		f.setVisible(true);
	}
	private void event() {
		f.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}	
		});
		mi1.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				fg=new FileDialog(f,"保存",FileDialog.SAVE);
				fg.setVisible(true);
			}		
		});
		mi2.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				fg=new FileDialog(f,"打开",FileDialog.LOAD);
				fg.setVisible(true);
			}	
		});
	}
}




---------------------- android培训、java培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值