java对于图形界面编程提供了多个组件都存放在AWT和Swing包中。
awt:不跨平台,显示样式和颜色依赖于平台。
swing:跨平台的。
awt:
Component:
|--Button
|--Label
|--Checkbox
|--TextComponent
|--TextField
|--TextArea
|--Container
|--Window
|--Frame
|--Dialog
|--FileDialog
|--Panel
Container:是一个特殊的组件可以存放组件的组件。
public void createWindow() {
Frame f = new Frame("my frame");
f.setBounds(300,200,600,500);
f.setLayout(new FlowLayout());
Button but = new Button("my button");
f.add(but);
f.setVisible(true);
}
--------------------------------------------------------------------------------------------------------------------------------------------
事件监听机制:
组成部分:
1,事件源(组件)
2,事件对象。
3,监听器。(封装了事件源对应的动作的对象);
4,事件处理器。(就是对相对应的动作进行内容的定义。)
在进行图形界面开发的时候,先明确事件源,使用事件源的addXXXListener方法将监听器与事件源相关联,也就是将监听器注册到事件源上。
当外部动作符合了监听器所监听的动作,并作用到了事件源上,那么就会产生相对应的事件对象。并该事件对象会被自动传入给对应的动作的参数。只要将对应动作的代码自定义即可。
public void myEvent() {
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
------------------------------------------------------------------------------------------------------------------------------------------
范例:
自定义一个窗体,可以通过录入的目录展现目录下的所有文件及文件夹名称。
class MyWindow {
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
MyWindow() {
init();
}
public void init(){
f = new Frame("my frame");
f.setBounds(300,200,600,500);
f.setLayout(new FlowLayout());
tf = new TextField(60);
but = new Button("转到");
ta = new TextArea(25,70);
f.add(tf);
f.add(but);
f.add(ta);
f.setVisible(true);
}
private void myEvent() {
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.setText("");
String path = tf.getText();
File dir = new File(path);
if(dir.exists() && dir.isDirectory()) {
String[] names = dir.list();
for(String name : names) {
ta.append(name+"\r\n");
}
} else {
Dialog dia = new Dialog(f,"提示信息",true);
dia.setBounds(400,300,280,200);
dia.setLayout(new FlowLayout());
String info = "输入的目录"+path+"是错误的!";
Label lab = new Label(info);
Button but = new Button("哦了");
dia.add(lab);
dia.add(but);
dia.setVisible(true);
}
}
});
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}