java基础知识12-javaUI1(二)

2014-11-24 07:37:09 · 作者: · 浏览: 2
vt, Object arg) { if(evt.target.equals(lst)) { t.setText(""); String[] items = lst.getSelectedItems(); for(int i = 0; i < items.length; i++) t.appendText(items[i] + "\n"); } else if(evt.target.equals(b)) { if(count < flavors.length) lst.addItem(flavors[count++], 0); } else return super.action(evt, arg); return true; } }
*************************************************************************

public boolean handleEvent(Event evt) {
	if(evt.id == Event.LIST_SELECT || evt.id == Event.LIST_DESELECT) {
		if(evt.target.equals(lst)) {
			t.setText("");
			String[] items = lst.getSelectedItems();
			for(int i = 0; i < items.length; i++)
				t.appendText(items[i] +"\n");
		}
		else 
			return super.handleEvent(evt);
	} 
	else 
	// must return super.handleEvent(evt);
		return super.handleEvent(evt);
	return true;
}
public boolean action(Event evt, Object arg) {
	if(evt.target.equals(b)) {
		if(count < flavors.length)
		lst.addItem(flavors[count++], 0);
	}
	else 
		return super.action(evt, arg);
	return true;
}

并且必须强调的是handle中的最后一个必须返回super.handle(evt);因为必须把handle中不想处理的事情交给父类,要不然例子中的action将不会被执行。
7:布局
java中的布局有多个,我们可以采取各种各样的布局,是界面呈现自己想要的姿态
(1)FlowLayout:
按照顺序依次排放各个组件
(2)BorderLayout
将整个布局分为上下左右中五个部位
(3)GridLayout
将整个布局分为m×n块均匀大小
(4)CardLayout
一个平面上所有的组件重合,但是某一个时刻只有一个是被及激活的。通过下面这样的方式来改变激活重合的组件。
if (evt.target.equals(first)) {
		cl.first(cards);
	} 
	else if (evt.target.equals(second)) {
		cl.first(cards);
		cl.next(cards);
	} 
	else if (evt.target.equals(third)) {
		cl.last(cards);
	}  

8:程序片applet的限制
applet出于安全机制考虑,它不能访问本地磁盘,不能拥有菜单,对话框不被信任;




9:新的事件委托事件函数
新的事件处理机制采用事件源和监听器的模式,程序如下所示:
class B1 implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		t.setText("Button 1");
	}
}

通过设置内部类来实现UI和事件处理相互分离的作用

10:applet 和 窗口程序的结合
通过在类中添加一个main函数就可以将程序变成一个既能在HTML中运行的程序片,又能在桌面中运行的程序片。
public static void main(String[] args) {
   	TextNew applet = new TextNew();
   	Frame aFrame = new Frame("TextNew");
	aFrame.addWindowListener(
			new Win dowAdapter() {
				public void windowClosing(WindowEvent e) 
				{
					System.exit(0);
				}
			});
	aFrame.add(applet, BorderLayout.CENTER);
	aFrame.setSize(300,200);
	applet.init();
	applet.start();
	aFrame.setVisible(true);
}