1. graphical User Interface(图形化用户接口)。
2. 用图形方式,来显示计算机的操作界面,这样方便直观
CLI
1. conmand line User Inteface(命令行用户接口)
2. 就是常见的Dos命令操作
3. 需要记忆一些常见的命令,操作不直观
举例:
1. 比如:创建文件,或者删除文件夹等
Java为GUI提供的对象都存在java.Awt和java.Swing两个包中
AWT和Swing
Awt:Abstract WindowToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件
javax.swing:在AWT的基础上,建立一套图形界面系统,其中提供了更多的组件,而且完全由java实现;增强了移植性,属于轻量级控件
布局管理器
1. 容器中的组件的排放方式,就是布局
2. 常见的布局管理器:
1. flowLayout(流式布局管理器)
从左到右的顺序排列
Panelmore的布局管理器
2. BorderLayout(边界布局管理器)
东南西北中
Frame默认的布局管理器
3. GridLayout(网格布局管理器)
规则的矩阵
4. CardLayout (卡片布局管理器)
选项卡
5. GriddBagLayout(网格包布局管理器)
非规则的矩阵实例:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Test1
{
public static void main(String[] args)
{
Frame frame=new Frame("窗体一");///构造一个由标题的窗体
//设置位置和大小显示 替代setSize(x,y)和setLocation(x,y);
frame.setBounds(400, 200, 500,400);
frame.setLayout(new FlowLayout());//设置窗体的布局
Button button=new Button("我是一个按钮");//创建按钮
frame.add(button);//将按钮添加到窗体上
//为窗体添加监听
//WindowAdapter实现了WindowLiatener接口。可以减少方法的实现
frame.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.out.println("closeing.....");
System.exit(0);
}
@Override
public void windowOpened(WindowEvent e)
{
System.out.println("我被打开了");
}
});
frame.setVisible(true);//窗体more不可见,显示声明可见
}
}
Container常用的子类:WindowPanel(面板,不能单独存在)
window常用的子类:FrameDialog
简单的窗体创建过程
Frame f=new Frame(“mywindow”);
f.setLayout(newFlowLayout());
f.setSize(500,400);//设置窗体的大小
f.setLocation(300,200);//设置窗体出现的屏幕位置
f.setVisible(true);
事件监听机制组成
² 事件源 : awt或Swing包中的哪些图形组件
² 事件(Event): 每一个事件源都有自己特有的对应事件和共性事件
² 监听器(Listener): 将可以触发某一事件的动作封装到了监听器
² 事件处理(引发事件后处理方式)为按钮添加事件
package day22;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test2
{
private Frame f;
private Button button;
public Test2()
{
init();
myEvent();
}
public void init()
{
f=new Frame("myFrame");
//对frame进行基本的设置
f.setBounds(300, 300,600,500);
f.setLayout(new FlowLayout());
button=new Button("my Button");
//将组建添加到frame中
f.add(button);
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
//为窗体添加监听器
f.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出程序
}
});
//为按钮添加时间
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("按钮干的");
System.exit(0);
}
});
}
public static void main(String[] args)
{
new Test2();
}
}
按钮事件,窗体事件,键盘事件综合
ackage day22;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test3
{
private Frame f;
private Button button;
TextField tf;
public Test3()
{
init();
myEvent();
}
public void init()
{
f=new Frame("myFrame3");
//对frame进行基本的设置
f.setBounds(300, 300,600,500);
f.setLayout(new FlowLayout());
button=new Button("my Button");
tf=new TextField(10);
//将组建添加到frame中
f.add(button);
f.add(tf);
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
//为窗体添加监听器
f.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出程序
}
});
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("活动一次");
}
});
//为按钮添加的是鼠标
button.addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标进入");
}
@Override
public void mousePressed(MouseEvent e)
{
System.out.println("鼠标点击");
}
@Override
public void mouseClicked(MouseEvent e)
{
//单击
//双击
if(e.getClickCount()==2)
{
System.out.println("连续点击两次");
}
}
});
//给button添加键盘事件
button.addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e)
{
System.out.println(KeyEvent.getKeyText(e.getKeyCode()));
if(e.getKeyCode()==KeyEvent.VK_ESCAPE)//Esc
{
System.exit(0);//退出程序
}
}
});
//为输入框添加键盘事件
tf.addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e)
{
int code=e.getKeyCode();
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
{
//现在输入0-9
System.out.println("非法");
e.consume();//屏蔽键
}
}
});
}
public static void main(String[] args)
{
new Test3();
}
}
package day22;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.jws.WebParam.Mode;
public class Test5
{
private Frame f;
private MenuBar mb;
private Menu fileMenu;
private MenuItem openItem,saveItem,exitItem;
private FileDialog openDialog,saveDialog;
private TextArea ta;
File file;
public Test5()
{
init();
}
public void init()
{
f=new Frame("my frame");
f.setBounds(300, 100,500,600);
//f.setLayout(new FlowLayout());
mb=new MenuBar();
fileMenu=new Menu("文件");
openItem=new MenuItem("打开");
saveItem=new MenuItem("保存");
exitItem=new MenuItem("退出");
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(exitItem);
mb.add(fileMenu);
f.setMenuBar(mb);//将菜单栏添加到窗体中
f.setVisible(true);
//第三个参数为模式,默认打开LOAD,可以指定保存
openDialog=new FileDialog(f,"请选择一个文件",FileDialog.LOAD);
saveDialog=new FileDialog(f,"保存一个文件",FileDialog.SAVE);
ta=new TextArea(20, 60);
f.add(ta);
myEvent();
}
public void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
openItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
openDialog.setVisible(true);
String dirPath=openDialog.getDirectory();
String fileName=openDialog.getFile();
if(dirPath==null||fileName==null)
return;
ta.setText("");//清空文字
file=new File(dirPath,fileName);
try
{
BufferedReader br=new BufferedReader(new FileReader(file));
String line=null;
while((line=br.readLine())!=null)
{
ta.append(line+"\r\n");
System.out.println(line);
}
br.close();
} catch (Exception e2)
{
throw new RuntimeException("读取失败");
}
}
});
saveItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDialog.setVisible(true);
String dirPath=saveDialog.getDirectory();
String fileName=saveDialog.getFile();
if(dirPath==null||fileName==null)
return;
file=new File(dirPath,fileName);
}
try
{
BufferedWriter bw=new BufferedWriter(new FileWriter(file));
String text=ta.getText();
bw.write(text);
bw.close();
} catch (Exception e2)
{
throw new RuntimeException();
}
}
});
}
public static void main(String[] args)
{
new Test5();
}
}