|--Container:可包含其他 AWT 组件的组件。
|--Window:窗口。
|--Frame:框架。
|--Dialog:对话框。
|--FileDialog:文件对话框。
|--Panel:面板。
|--Button:按钮。
|--Label:标签,作用是封装文字。
|--Checkbox:复选框。
|--TextComponent:文本组件。
|--TextArea:文本框。
|--TextField:文本区域。
五)常用方法
一)Button
1)void | setBounds(int x, int y, int width, int height) :
移动组件并调整其大小。
2)Button(String label) :构造一个带指定标签的按钮。
二)Container
1)Component | add(Component comp):将指定组件追加到此容器的尾部。
2)void | setLayout(LayoutManager mgr):设置此容器的布局管理器。
三)Window
1) void | setSize(int width, int height):调整组件的大小,使其宽度为 width,高度为 height。
2)void | setVisible(boolean b):根据参数 b 的值显示或隐藏此 Window。
四) Frame
1) Frame(String title):构造一个新的、最初不可见的、具有指定标题的 Frame 对象。
2)Panel:默认的布局管理器。
3)BorderLayout(边界布局管理器):东、南、西、北、中。
4)Frame默认的布局管理器。
5)GridLayout(网格布局管理器):规则的矩阵。
6)CardLayout(卡片布局管理器):选项卡。
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEvent
{
//创建全局变量
private Frame f = null;
private Button but = null;
private TextField tf;
//初始化窗体
MouseAndKeyEvent(){
init();
}
//创建窗体
public void init(){
f = new Frame("my frame");
f.setBounds(300,200,600,500);
f.setLayout(new FlowLayout());
tf = new TextField(20);
but = new Button("button");
f.add(tf);
f.add(but);
myEvent();
f.setVisible(true);
}
//注册事件
private void myEvent(){
//添加监听器,引发退出事件
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
//给but添加一个活动监听器
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("action ok");
}});
//给文本框添加一个监听器,引发键盘事件
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
System.out.println(e.getKeyChar() + "..." + e.getKeyChar());
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)){
e.consume();
System.out.println(code + "是非法的");
}});
//鼠标事件
//myMouseEvent();
//键盘事件
myKeyEvent();
}
//鼠标事件
public void myMouseEvent(){
//给but添加一个鼠标监听器
but.addMouseListener(new MouseAdapter(){
private int count = 1;
private int clickCount = 1;
private int clickCount2 = 1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入该组件" + count++);
}
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2)
System.out.println("双击动作" + clickCount2++);
//System.out.println("点击动作" + clickCount++);
}});
}
//键盘事件
public void myKeyEvent(){
//给but添加一个键盘监听器
but.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e)
{
//组合键ctrl键和回车键同时触发
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
System.out.println("ctrl+enter is runing");
//System.out.println(e.getKeyChar() + "..." + e.getKeyCode());
//System.out.println(KeyEvent.getKeyText(e.getKeyCode()) + "..." + e.getKeyChar());
}
});
}
public static void main(String[] args)
{
new MouseAndKeyEvent();
}
一、菜单(Menu)
1、Menu:菜单,Menu extends MenuItem;有右三角的图标存在,可添加Menu和MenuItem。
2、MenuBar:菜单栏,可添加菜单和条目。
3、MenuItem:条目,及菜单项目,无右三角的图标存在,是最终的菜单项。
一) Menu (java.awt )
1)构造方法:Menu(String label) :构造具有指定标签的新菜单。
2)常用方法:MenuItem add(MenuItem mi) :将指定的菜单项添加到此菜单。
二)MenuBar(java.awt )
1)概述:是封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与 Frame 对象关联,可以调用该框架的 setMenuBar 方法。
2)构造方法:MenuBar():创建新的菜单栏。
3)常用 方法: Menu add(Menu m):将指定的菜单添加到菜单栏。
三)MenuItem (java.awt )
1) 构造方法: MenuItem(String label) :构造具有指定的标签且没有键盘快捷方式的新菜单项。
2)方法: void | addActionListener(ActionListener l) :添加指定的动作侦听器,以从此菜单项接收动作事件。
十、FileDialog 类
一)概述:
显示一个对话框窗口,用户可以从中选择文件。
由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时,它将阻塞其余应用程序,直到用户选择一个文件。
二)构造方法:
1) FileDialog(Frame parent, String title, int mode) : 创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
2) static int LOAD :此常量值指示文件对话框窗口的作用是查找要读取的文件。
3) static int SAVE :此常量值指示文件对话框窗口的作用是查找要写入的文件。
三) 常用方法:
1) String | getDirectory() 获取此文件对话框的目录。
2) String | getFile() 获取此文件对话框的选定文件。
十一、jar包
一)生成步骤:
1、首先要在java文件中导入一个包,没有则需创建一个包,如package mymenu;
2、生成包:通过编译javac -d c:\myclass MyMenu.java,此时则在c盘下的myclass文件夹下生成了所有的.class文件。
3、在此目录下新建一个文件,如1.txt或者其他任意名称任意扩展名的文件都可,然后在其中编辑固定的格式:“Main-Class: mymenu.MenuDemo”,只写引号中的内容。需要需要在冒号后有一个空格,在文件末尾要回车。
4、编译:jar -cvfm my.jar 1.txt mymenu即可。如果想添加其他信息,则直接编译jar即可得出相应的命令。
5、此时双击即可执行。
import java.awt.*;//导入包
import java.awt.event.*;
import java.io.*;
public class MyMenuTest
{
//建立设为私有
private Frame f;//窗体
private MenuBar bar;//菜单栏
private TextArea ta;//文本区域
private Menu fileMenu;//菜单
private MenuItem openItem,saveItem,closeItem;//字条目
private FileDialog openDia,saveDia;//文件打开和关闭
private File file;
MyMenuTest()//构造函数.初始化就执行init函数
{
init();
}
public void init()
{
f = new Frame("my window");//建立窗体
f.setBounds(300,100,650,600);设置窗体的坐标,和距离左上屏幕的坐标
bar = new MenuBar();//建立菜单栏
ta = new TextArea();//建立文本区域
fileMenu = new Menu("文件");//建立菜单
openItem = new MenuItem("打开");//子条目
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");
fileMenu.add(openItem);//将条目添加到菜单中
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);//将菜单添加到菜单栏文件中
f.setMenuBar(bar);//将菜单栏和窗体相关联
openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);//创建打开,LOAD代表打开
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);//SAVE代码保存
f.add(ta);//将文本区域添加到窗体中
myEvent();
f.setVisible(true);
}
private void myEvent()
{
//事件源是子条目保存,事件是发生操作,处理是保存.
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
BufferedWriter bufw =null;
if(file==null)
{
//判断file是否为空,如果是空的话提示对话框保存并,
saveDia.setVisible(true);
//获取目录和文件
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
//点击对话框取消的时候,会发生异常,进行判断
//目录或者文件是空的话就返回
if(dirPath==null || fileName==null)
return ;
//创建文件.获取文件目录和文件的抽象信息
file = new File(dirPath,fileName);
}
try
{
//建立字输出符流容器.
bufw= new BufferedWriter(new FileWriter(file));
String text = ta.getText();//调用TextArea父类的getText()方法,获取文本组件表示的文本
bufw.write(text);//输出.
}
catch (IOException ex)
{
throw new RuntimeException("保存错误啦");
}
finally
{
try
{
if(bufw!=null)
bufw.close();//关闭流
}
catch (IOException ex)
{
throw new RuntimeException("字符输出流关闭失败");
}
}
}
});
//事件源是openItem打开.事件是发生操作时.处理时保存
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
BufferedReader bufr =null;
//提示对话框打开,获取路径和文件
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
{
//建立字输出符流容器.
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("读取失败");
}
finally
{
try
{
if(bufr!=null)
bufr.close();//关闭流
}
catch (IOException ex)
{
throw new RuntimeException("字符输出流关闭失败");
}
}
}
});
//事件源是子条目退出,事件是关闭动作,处理时程序关闭.
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//事件源是窗体,事件是关闭动作,处理时程序关闭.
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();
}
}