1,概述
GUI,即图形用户界面。java将这种界面封装成对象。有两个包:
java.Awt:抽象窗口工具包,要调用本地系统方法实现功能。重量级控件。
javax.Swing:在awt基础上建立的。增强了可移植性,轻量级控件。开发多用这个。
2,GUI的继承关系图
Component:
|--Container
|--Window
|--Frame
|--Dialog
|--FileDialog
|--Panel
|--Button
|--Label
|--Checkbox
|--TextComponent
|--TextArea
|--TextField
窗体的布局管理器:FlowLayout:流式布局,从左到右如果一个则居中Panel默认的布局管理器。
BorderLayout:边界式布局,东西南北中,不设置则是中间铺满。Frame的默认布局管理器。
GridLayout:网格式。
CardLayout:卡片式。
GridBayLayout:网格包布局。
3,创建一窗体
先有窗体->窗体基本设置(位置、布局。。)->定义组件并添加到窗体->显示窗体。
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame();
Button b = new Button("关闭");
f.setTitle("diyici");
f.setSize(700, 400);
f.setLocation(500, 500);
f.setLayout(new FlowLayout());
f.add(b);
f.setVisible(true);
}
}
4,监听处理事件
事件源(图形界面组件),事件(Event),监听器(Listener),处理事件。
我们编程主要编写处理事件。
创建一菜单窗口流程:
先有Frame,在Frame中setMenuBar()加入菜单功能。
菜单中加入Menu()这是你要的菜单的名字。
菜单中加入下拉菜单MenuItem(),
菜单创建子菜单就Menu();
一个实例,窗口,有打开功能,可以打开文件并显示。这里并未写出save的功能。
package myDemo;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class OpenDemo
{
private Frame f;
private MenuBar mb;
private Menu m ;
private MenuItem openItem, saveItem, closeItem;
private FileDialog openDia, saveDia;
private TextArea ta;
OpenDemo()
{
init();
}
public void init()
{
f = new Frame("my demo");
f.setBounds(300, 100, 700, 600);
//f.setLayout(new FlowLayout());
mb = new MenuBar();
m = new Menu("文件");
closeItem = new MenuItem("退出");
openItem = new MenuItem("open");
saveItem = new MenuItem("save");
openDia = new FileDialog(f, "open", FileDialog.LOAD);
saveDia = new FileDialog(f, "open", FileDialog.SAVE);
//b = new Menu("子菜单");
ta = new TextArea();
f.add(ta);
f.setMenuBar(mb);
mb.add(m);
//m.add(b);
//b.add(subItem);
m.add(openItem);
m.add(saveItem);
m.add(closeItem);
//f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
File file = new File(dirPath, fileName);
//String s = null;
//while ((s=br.readLine())!= null)
//{
//ta.append(s);
//}
if (dirPath==null || fileName==null)
return ;
ta.setText("");
System.out.println(dirPath+"...."+fileName);
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while ((line=br.readLine())!=null)
{
ta.append(line+"\r\n");
}
br.close();
}
catch (IOException ex)
{
throw new RuntimeException("shibai");
}
}
});
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new OpenDemo();
}
}
5, jar包的处理
在java文件中添加package,编译时指定目录javac -d c:\ xxx.java
在此目录下新建一个文件a.b,Main-Class: myDemo.OpenDemo空格后的是包名,跟着的是jvm需要找的入口函数的名。文件末尾要回车。固定格式。
再编译,jar -cvfm xx.jar a.b myDemo