##AWT
###awt(abstract window toolkit)
- 包括了很多类和接口,用于java application的GUI编程
- GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现
- 使用awt所涉及的类一般在java.awt包及其子包中
- Container和Component是awt中的两个核心类
###Frame
frame是window的子类,由Frame或其子类创建的对象为一个窗体。
Frame的常用构造方法 Frame() Frame(String s) 创建标题栏为字符串s的窗口
setBounds(int x,int y,int width,int height); 设置窗体位置和大小,x,y是左上角坐标
setSize(int width,int height); 设置窗体的位置,x,yshirt左上角坐标
setLocation(int x,int y) 设置窗体的大小,width和height分别是宽度和高度
setViseble(boolean b) 设置是否可见
setTitle(String name) String getTitle()
setResizable(boolean b) 设置是否可以调整大小
##java窗口的事件
void windowActivated(WindowEvent e) 将 Window 设置为活动 Window 时调用。
void windowClosed(WindowEvent e) 因对窗口调用 dispose 而将其关闭时调用。
void windowClosing(WindowEvent e) 用户试图从窗口的系统菜单中关闭窗口时调用。
void windowDeactivated(WindowEvent e) 当 Window 不再是活动 Window 时调用。
void windowDeiconified(WindowEvent e) 窗口从最小化状态变为正常状态时调用。
void windowIconified(WindowEvent e) 窗口从正常状态变为最小化状态时调用。
void windowOpened(WindowEvent e) 窗口首次变为可见时调用。
##TextArea
setEditable(false); //只读属性
##匿名类关闭java窗口
import java.awt.*;
import java.awt.event.*;
public class FrameClose
{
public static void main(String []args){
new MyFrame("可以关闭窗口了!");
}
}
class MyFrame extends Frame
{
public MyFrame(String s){
super(s);
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
/*
//用内部类实现
this.addWindowListener(new MyWindowMonitor());
*/
//用局部类,即匿名类实现
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
javax.swing.JOptionPane.showMessageDialog(null,"您把我关闭了!","提示",0);
System.exit(0);
}
});
}
//内部类实现
class MyWindowMonitor extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
}
}
##文本框TextFiedld
- TextField文本框输入
- setEchoChar('');设置显示的内容为,即为*来屏蔽输入的内容
代码示例:
import java.awt.*;
import java.awt.event.*;
public class TextFieldTest{
public static void main(String[]args){
new TFFrame();
}
}
class TFFrame extends Frame{
public TFFrame(){
TextField tf=new TextField();
add(tf);
tf.addActionListener(new Monitor());
tf.setEchoChar('*');
pack();
setVisible(true);
}
}
class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e){
TextField tf=(TextField)e.getSource();
System.out.println(tf.getText());
}
}
##事件
- 使用java.awt.event.*;包的内容
- 添加事件/绑定事件:addActionListener(//实现ActionListener接口的类的对象);
- 实现ActionListener接口的public void actionPerformed(ActionEvent e){}方法
代码示例:
import java.awt.*;
public class EventTest{
public static void main(String[]args){
Frame f=new Frame("事件练习!");
f.setBounds(500,500,500,500);
f.setLayout(new FlowLayout());
//添加文本框
TextArea t=new TextArea();
t.setBounds(100,100,300,100);
t.setVisible(true);
f.add(t);
//添加按钮
Button b=new Button("Press Me!");
MyEvent e=new MyEvent(t);
b.addActionListener(e);
f.add(b);
f.setVisible(true);
}
}
//事件
class MyEvent implements java.awt.event.ActionListener{
private TextArea t;
public MyEvent(){}
public MyEvent(TextArea t){
this.t=t;
}
public void actionPerformed(java.awt.event.ActionEvent e){
t.setText(t.getText()+"\n你点击了我,我痛啊!");
System.out.println("你点击了我!");
}
}
##如何区分同一事件的绑定
- 加入两个button同时绑定了一个监听器,那么我们怎么区分它们?
代码示例:
import java.awt.*;
import java.awt.event.*;
public class MyFirstEventTest{
public static void main(String[]args){
Frame f=new Frame("事件练习");
f.setBounds(500,500,500,500);
//添加button
Button b1=new Button("上一步");
Button b2=new Button("下一步");
//添加TextArea
TextArea t=new TextArea();
t.setBounds(100,100,200,200);
f.add(t);
Monitor m=new Monitor(t);
b1.setActionCommand("Back!");
b2.setActionCommand("Next!");
b1.addActionListener(m);
b2.addActionListener(m);
f.add(b1);
f.add(b2);
f.setLayout(new FlowLayout());
f.setVisible(true);
}
}
class Monitor implements ActionListener{
private TextArea t;
public Monitor(TextArea t){
this.t=t;
}
public void actionPerformed(ActionEvent e){
t.setText(t.getText()+"\t"+e.getActionCommand()+"\n");
}
}
##如何关闭java显示的窗口
- 调用并添加addWindowListener()方法!
- 实现WindowAdapter的windowClosing方法
代码示例:
import java.awt.*;
import java.awt.event.*;
public class FrameClose
{
public static void main(String []args){
new MyFrame("可以关闭窗口了!");
}
}
class MyFrame extends Frame
{
public MyFrame(String s){
super(s);
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
this.addWindowListener(new MyWindowMonitor());
}
class MyWindowMonitor extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
}
}