GUI(Graphical User Interface)图形化界面编程总结
Java.Awt:Abstract Window ToolKit(抽象窗口工具包)
Javax.Swing:
图形化界面基本设置:
设置窗体大小:setSize(长,宽);
设置窗体位置:setLocation(距离左,距离上);setBounds(长,宽,距离左,距离上);
设置布局:setLayout(new FlowLayout());
使窗体可见:setVisible(true);
事件监听机制:
事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理
Eg:编写程序,练习图形化界面编程!
import
java.awt.*;
import
java.awt.event.*;
import
java.io.*;
public
class
MyWindowDemo {
private
Frame
f
;
private
TextField
tf
;
private
Button
but
;
private
TextArea
ta
;
private
Dialog
d
;
private
Label
lab
;
private
Button
okBut
;
MyWindowDemo() {
init();
}
public
void
init() {
f
=
new
Frame(
"my window"
);
f
.setBounds(300, 100, 600, 500);
f
.setLayout(
new
FlowLayout());
tf
=
new
TextField(60);
but
=
new
Button(
"转到"
);
ta
=
new
TextArea(25, 70);
d
=
new
Dialog(
f
,
"提示信息-self"
,
true
);
d
.setBounds(400, 200, 240, 150);
d
.setLayout(
new
FlowLayout());
lab
=
new
Label();
okBut
=
new
Button(
"确定"
);
d
.add(
lab
);
d
.add(
okBut
);
f
.add(
tf
);
f
.add(
but
);
f
.add(
ta
);
myEvent();
f
.setVisible(
true
);
}
private
void
myEvent() {
okBut
.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
d
.setVisible(
false
);
}
});
d
.addWindowListener(
new
WindowAdapter() {
public
void
windowClosing(WindowEvent e) {
d
.setVisible(
false
);
}
});
tf
.addKeyListener(
new
KeyAdapter() {
public
void
keyPressed(KeyEvent e) {
if
(e.getKeyCode() == KeyEvent.
VK_ENTER
)
showDir();
}
});
but
.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
showDir();
}
});
f
.addWindowListener(
new
WindowAdapter() {
public
void
windowClosing(WindowEvent e) {
System. exit(0);
}
});
}
private
void
showDir() {
String dirPath =
tf
.getText();
File dir =
new
File(dirPath);
if
(dir.exists() && dir.isDirectory()) {
ta
.setText(
""
);
String[] names = dir.list();
for
(String name : names) {
ta
.append(name +
"\r\n"
);
}
}
else
{
String info =
"您输入的信息:"
+ dirPath +
"是错误的。请重输"
;
lab
.setText(info);
d
.setVisible(
true
);
}
}
public
static
void
main(String[] args) {
new
MyWindowDemo();
}
}
菜单:
MenuBar 菜单整体;
Menu 包含于MenuBar中;MenuItem包含于Menu中!
以上3个关系添加用add();
将MenuBar放进Frame中用setMenuBar();
FileDialog.LOAD:打开的mode
FileDialog.Save:保存的mode
练习:一个简易的记事本
import
java.awt.*;
import
java.awt.event.*;
import
java.io.*;
public
class
MyMenuDemo {
private
Frame
f
;
private
TextArea
ta
;
private
MenuBar
mb
;
private
Menu
me
;
private
MenuItem
miNew
,
miSave
,
miLoad
;
private
File
file
;
private
FileDialog
openDia
,
saveDia
;
MyMenuDemo() {
init();
}
public
void
init() {
f
=
new
Frame(
"万琪--记事本"
);
f
.setBounds(300, 100, 650, 600);
ta
=
new
TextArea();
// ta.setBounds(302,105,400,300);
// f.setLayout(new FlowLayout());//为什么设置成了流式布局之后再设置文本区域没有效果
mb
=
new
MenuBar();
me
=
new
Menu(
"文件(F)"
);
miNew
=
new
MenuItem(
"新建"
);
miSave
=
new
MenuItem(
"保存(S)"
);
miLoad
=
new
MenuItem(
"打开(O)"
);
mb
.add(
me
);
me
.add(
miNew
);
me
.add(
miLoad
);
me
.add(
miSave
);
f
.setMenuBar(
mb
);
f
.add(
ta
);
openDia
=
new
FileDialog(
f
,
"打开文件"
, FileDialog.
LOAD
);
saveDia
=
new
FileDialog(
f
,
"保存文件"
, FileDialog.
SAVE
);
myEvent();
f
.setVisible(
true
);
}
public
void
myEvent() {
f
.addWindowListener(
new
WindowAdapter() {
public
void
windowClosing(WindowEvent e) {
System. exit(0);
}
});
miLoad
.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
openDia
.setVisible(
true
);
String dirPath =
openDia
.getDirectory();
String fileName =
openDia
.getFile();
if
(dirPath ==
null
|| fileName ==
null
)
return
;
ta
.setText(
""
);
file
=
new
File(dirPath, fileName);
try
{
BufferedReader bufr =
new
BufferedReader(
new
FileReader(
file
));
String line =
null
;
while
((line = bufr.readLine()) !=
null
) {
ta
.append(line +
"\r\n"
);
}
bufr.close();
}
catch
(IOException ex) {
throw
new
RuntimeException(
"读取失败"
);
}
}
});
miSave
.addActionListener(
new
ActionListener() {
public
void
actionPerformed(ActionEvent e) {
if
(
file
==
null
) {
saveDia
.setVisible(
true
);
String dirPath =
saveDia
.getDirectory();
String fileName =
saveDia
.getFile();
if
(dirPath ==
null
|| fileName ==
null
)
return
;
file
=
new
File(dirPath, fileName);
}
try
{
BufferedWriter bufw =
new
BufferedWriter(
new
FileWriter(
file
));
String text =
ta
.getText();
bufw.write(text);
bufw.close();
}
catch
(IOException ex) {
throw
new
RuntimeException(
""
);
}
}
});
}
public
static
void
main(String[] args) {
new
MyMenuDemo();
}
}
打jar包的过程:
1、 编译包 jar –cvf jar名 包名
2、 写一个文件main-class: 包名.类名【加个回车】
3、 jar –cvfm jar名 文件名 包名
配置jar执行的过程:
工具---文件夹选项---文件类型---新建---文件扩展名jar
然后确定----高级----修改图标-----open------javaw的路径—jar即可!