第二十二天
图形化界面布局:
FlowLayout(流式布局) BorderLayout(边界布局) GridLayout(网格布局) CardLayout(卡片布局) GridBagLayout(网格包布局)
创建图形化界面:
1,创建Frame窗体 2,对窗体大小进行基本设置 大小 位置 布局 3,定义组件 4,将组件通过窗体的add方法添加到窗体中 5,显示窗体setVisible(true);
import java.awt.*;
class Demo
{
public static void main(String[]args)
{
Frame f = new Frame("窗口");默认边界式布局
f.setSize(300,200);设置大小
f.setLocation(300,200);设置显示位置
f.setLayout(new FlowLayout());设置布局方案
Button b = new Button("小按钮");创建一个按钮
f.add(b);添加进按钮
f.setVisible(true);显示窗口
}
}
事件监听机制的特点:
1,事件源:awt包或者swing包中的图形界面组件 2,事件:源都有自己特有的对应事件和共性事件
3,监听器:将可以触发某一事件的动作(不止一个动作)封装到监视器中 以上在java中都定义好直接取其对象使用即可
4,事件处理:需要自定义处理方式或默认的
WindowListener的子类WindowAdapter已经实现了WindowListener接口并覆盖其中所有方法,只需继承WindowAdapter方法即可
windowClosing(WindowEvent e)关闭窗口 windowActivated(WindowEvent e)激活窗口 windowOpened(WindowEvent e)打开窗口
按钮添加事件:活动监听器
b.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
import java.awt.*;
import java.awt.event.*;
class Demo
{
public static void main(String[]args)
{
Frame f = new Frame("窗口");
f.setSize(300,200);
f.setLocation(300,200);
f.setLayout(new FlowLayout());
Button b = new Button("小按钮");
f.add(b);
f.addWindowListener(new Mywin());添加窗体监听器
f.addWindowListener(new WindowAdapter()匿名内部类方法
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
f.setVisible(true);
}
}
class Mywin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
定义窗体实例:窗体与事件分开定义
import java.awt.*;
import java.awt.event.*;
class FrameDemo
{
private Frame f;
private Button b;
FrameDemo()
{
init();
}
private void init()
{
f = new Frame("窗口");
f.setBounds(300,200,300,200);
f.setLayout(new FlowLayout());
b = new Button("按钮");
f.add(b);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
public static void main(String[]args)
{
new FrameDemo();
}
}
鼠标事件:
b.addMouseListener(new MouseAdapter()
public void mouseEbtered(MouseEvent e)鼠标进入
public void mouseClicked(MouseEvent e)鼠标点击
e.getClicked()获取鼠标点击次数
键盘事件:
t.addKeyListener(new KeyAdapter()
public void keyPressed(KeyEvent e)键盘按下
e.getKeyCode()获取按下的键的值 e.getChar()获取按键ABC
e.isControlDown() && e.getKeyCode()==KeyEvent.VK_A 表示ctrl键和a键同时按下
KeyEvent.VK_A获取a键的值 e.isControlDown()判断ctrl键是否按下
e.consume()不按默认方式处理 TextField 文本框
练习:标题添加目录点按钮显示目录中内容
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Demo
{
private Frame f;
private Button b;
private TextField tf;
private TextArea ta;
Demo()
{
info();
}
public void info()
{
f = new Frame("窗口");
f.setBounds(300,200,450,350);
f.setLayout(new FlowLayout());
b = new Button("按钮");
tf = new TextField(40);
ta = new TextArea(10,50);
f.add(tf);
f.add(b);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String dirPath = tf.getText();
File dir = new File(dirPath);
if(!(dir.exists() && dir.isDirectory()))
ta.setText("不是目录");
else
{
ta.setText("");
String[]str = dir.list();
for(String name:str)
{
ta.append(name+"\r\n");
}
}
tf.setText("");
}
});
}
public static void main(String[]args)
{
new Demo();
}
}
对话框Dialog
Dialog dig = new Dialog(Frame f,提示信息,true);true阻止上层所属对话框操作
dig.setBounds();设置位置大小 dig.setlayout(new FlowLayout());设置布局
Label lab = new Label();封装信息 dig.add(lab); String info = "信息"; lab.setText(info);
创建菜单:
private Frame f = new Frame("窗口");;
private MenuBar mb = new MenuBar();用于往窗口上添加
private Menu m = new Menu("文件");菜单
private MenuItem closeItem = new MenuItem("退出");菜单上的功能选项
m.add(closeItem);
mb.add(m);
f.setMenuBar(mb);
打开文件:
FileDialog open= new FileDialog(f,"我要打开",FileDialog.LOAD);
FileDialog save= new FileDialog(f,"我要保存",FileDialog.SAVE);
jar包双击执行:
将文件封装在包中,然后同自定义配置信息内部Main-Class: package.主类名+Enter 一同 -cvfm 打成jar包
工具文件夹选项文件类型 新建.jar扩展名文件高级 新建open浏览应用程序选择关联上javaw.exe -jar