AWT(Abstract Window Toolkit),中文译为抽象窗口工具包,该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
Frame是window的子类,Frame 是带有标题和边框的顶层窗口。
常用的构造方法
Frame()
构造一个最初不可见的 Frame 新实例()。
Frame(String title)
构造一个新的、最初不可见的、具有指定标题的 Frame 对象。
package java基础.GUI;
import java.awt.*;
public class Test{
public static void main(String args[]){
Frame f = new Frame("Java Gui");
f.setLayout(null);//设置布局
Button b = new Button("Button1");
Button b2 = new Button("Button2");
f.add(b);//添加一个按钮组件
f.remove(b);//移除一个按钮组件
f.add(b2);//添加一个按钮组件
b.setLocation(47,70);//设置按钮的x,y位置
b.setSize(60,25);//设置按钮的大小
b2.setLocation(88,66);//设置按钮的想x,y位置
b2.setSize(60,25);//设置按钮的大小
f.setSize(800,600);//设置Frame的大小
f.setLocation(88,66);//设置Frame的位置
f.setBackground(new Color(90,145,145,200));//设置Frame背景颜色
System.out.println(f.isResizable());
f.setResizable(false);//设置是否改变大小
System.out.println(f.isResizable());
f.setVisible(true);//设置是否可见
}
}
package java基础.GUI;
import java.awt.*;
public class TestMultiFrame {
public static void main(String args[]) {
MyFrame f1 = new MyFrame(100, 100, 200, 200, Color.BLUE);
MyFrame f2 = new MyFrame(300, 100, 200, 200, Color.YELLOW);
MyFrame f3 = new MyFrame(100, 300, 200, 200, Color.GREEN);
MyFrame f4 = new MyFrame(300, 300, 200, 200, Color.MAGENTA);
}
}
class MyFrame extends Frame {
static int id = 0;
MyFrame(int x, int y, int w, int h, Color color) {
super("MyFrame " + (++id));
setBackground(color);
setLayout(null);
/**
* setBounds(int x, int y, int width, int height)
移动组件并调整其大小。
*/
setBounds(x, y, w, h);
setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestPanel {
public static void main(String args[]) {
Frame f = new Frame("Java Frame with Panel");
Panel p = new Panel(null);
f.setLayout(null);
f.setBounds(300, 300, 500, 500);
f.setBackground(new Color(0, 0, 102));
p.setBounds(50, 50, 400, 400);
p.setBackground(new Color(204, 204, 255));
f.add(p);
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestMultiPanel {
public static void main(String args[]) {
new MyFrame2("MyFrameWithPanel",300,300,400,300);
}
}
class MyFrame2 extends Frame{
private Panel p1,p2,p3,p4;
MyFrame2(String s,int x,int y,int w,int h){
super(s);
setLayout(null);
p1 = new Panel(null); p2 = new Panel(null);
p3 = new Panel(null); p4 = new Panel(null);
p1.setBounds(0,0,w/2,h/2);
p2.setBounds(0,h/2,w/2,h/2);
p3.setBounds(w/2,0,w/2,h/2);
p4.setBounds(w/2,h/2,w/2,h/2);
p1.setBackground(Color.BLUE);
p2.setBackground(Color.GREEN);
p3.setBackground(Color.YELLOW);
p4.setBackground(Color.MAGENTA);
add(p1);add(p2);add(p3);add(p4);
setBounds(x,y,w,h);
setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class CenterPanel {
public static void main(String args[]) {
new MyFrame3(300, 300, 400, 300, Color.BLUE);
}
}
/**
* panel在中间的设置
* @author Jobs1127
*
*/
class MyFrame3 extends Frame {
private Panel p;
MyFrame3(int x, int y, int w, int h, Color c) {
super("FrameWithPanel");
setLayout(null);
setBounds(x, y, w, h);
setBackground(c);
p = new Panel(null);
p.setBounds(w / 4, h / 4, w / 2, h / 2);
p.setBackground(Color.YELLOW);
add(p);
setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestFlowLayout {
public static void main(String args[]) {
Frame f = new Frame("Flow Layout");
Button button1 = new Button("Ok ----okokokokookookoko");
Button button2 = new Button("Open");
Button button3 = new Button("Close");
f.setLayout(new FlowLayout(FlowLayout.LEFT));
f.add(button1);
f.add(button2);
f.add(button3);
f.setSize(100, 100);
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestFlowLayout2 {
public static void main(String args[]) {
Frame f = new Frame("Java Frame");
FlowLayout l = new FlowLayout(FlowLayout.CENTER, 20, 40);
f.setLayout(l);
f.setLocation(300, 400);
f.setSize(300, 200);
f.setBackground(new Color(204, 204, 255));
for (int i = 1; i <= 7; i++) {
f.add(new Button("BUTTON"));
}
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestBorderLayout {
public static void main(String args[]) {
Frame f;
f = new Frame("Border Layout");
Button bn = new Button("BN");
Button bs = new Button("BS");
Button bw = new Button("BW");
Button be = new Button("BE");
Button bc = new Button("BC");
f.add(bn, "North");
f.add(bs, "South");
f.add(bw, "West");
f.add(be, "East");
f.add(bc, "Center");
f.add(bn, BorderLayout.CENTER);
f.add(bs, BorderLayout.SOUTH);
f.add(bw, BorderLayout.WEST);
f.add(be, BorderLayout.EAST);
f.add(bc, BorderLayout.CENTER);//bn按钮将被覆盖
f.setSize(200,200);
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TestGridLayout {
public static void main(String args[]) {
Frame f = new Frame("GridLayout Example");
Button b1 = new Button("b1------hhahahahahahahn你好我很长--------1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
f.setLayout (new GridLayout(3,2));
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.pack(); // pack() 调整此窗口的大小,以适合其子组件的首选大小和布局
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
public class TenButtons {
public static void main(String args[]) {
Frame f = new Frame("Java Frame");
f.setLayout(new GridLayout(2, 1));
f.setLocation(300, 400);
f.setSize(300, 200);
f.setBackground(new Color(204, 204, 255));
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new BorderLayout());
Panel p11 = new Panel(new GridLayout(2, 1));
Panel p21 = new Panel(new GridLayout(2, 2));
p1.add(new Button("BUTTON"), BorderLayout.WEST);
p1.add(new Button("BUTTON"), BorderLayout.EAST);
p11.add(new Button("BUTTON"));
p11.add(new Button("BUTTON"));
p1.add(p11, BorderLayout.CENTER);
p2.add(new Button("BUTTON"), BorderLayout.WEST);
p2.add(new Button("BUTTON"), BorderLayout.EAST);
for (int i = 1; i <= 4; i++) {
p21.add(new Button("BUTTON"));
}
p2.add(p21, BorderLayout.CENTER);
f.add(p1);
f.add(p2);
f.setVisible(true);
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TestActionEvent {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b = new Button("Press Me!");
Monitor bh = new Monitor();// 实现ActionListener,new一个监听器
b.addActionListener(bh);// 按钮添加一个监听器
f.add(b, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
class Monitor implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed");
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TFActionEvent {
public static void main(String[] args) {
new TFFrame();
}
}
class TFFrame extends Frame {
TFFrame() {//构造方法
super("my TextField Frame");
TextField tf = new TextField();
add(tf);
tf.addActionListener(new TFActionListener());//添加一个监听器
pack();
setVisible(true);
}
}
/**
* 实现ActionListener
* @author Jobs1127
*
*/
class TFActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
/**
* 当TextField发生Action事件时,会生成一个ActionEvent事件对象
*/
TextField tf = (TextField) e.getSource();//获取事件源对象
System.out.println(tf.getText());
tf.setText("");
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TFPassword {
public static void main(String[] args) {
new TFFrame2();
}
}
/**
* 输入框输入时显示密码的样式
* @author Jobs1127
*
*/
class TFFrame2 extends Frame {
TFFrame2() {
TextField tf = new TextField();
add(tf);
tf.addActionListener(new TFActionListener2());
/**
* setEchoChar(char c)
设置此文本字段的回显字符。
*/
tf.setEchoChar('*');
pack();
setVisible(true);
}
}
class TFActionListener2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
TextField tf = (TextField) e.getSource();
System.out.println(tf.getText());
tf.setText("");
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TFMathTest extends Frame {
TextField num1;
TextField num2;
TextField sum;
public static void main(String[] args) {
new TFMathTest().launchFrame();
}
public void launchFrame() {
num1 = new TextField();
num2 = new TextField();
sum = new TextField();
num1.setColumns(10);
num2.setColumns(10);
sum.setColumns(15);
setLayout(new FlowLayout());
// setSize(500, 30);
Label lblPlus = new Label("+");
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyListener(this));
add(num1);
add(lblPlus);
add(num2);
add(btnEqual);
add(sum);
pack();
setVisible(true);
}
}
class MyListener implements ActionListener {
private TFMathTest tfmt;
public MyListener(TFMathTest tfmt) {
this.tfmt = tfmt;
}
public void actionPerformed(ActionEvent e) {
String s1 = tfmt.num1.getText();
String s2 = tfmt.num2.getText();
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
tfmt.sum.setText(String.valueOf(i1 + i2));
}
}
package java基础.GUI;
import java.awt.*;
public class TestPaint {
public static void main(String[] args) {
new PaintFrame().launchFrame();
}
}
class PaintFrame extends Frame {
public void launchFrame() {
setBounds(200, 200, 640, 480);
setVisible(true);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.red);//设置画笔的颜色
Color c = g.getColor();//获取画笔的颜色
g.fillOval(50, 50, 30, 30);//用画笔画了一个圆
g.setColor(Color.green);//改变画笔的颜色,然后再画个矩形
g.fillRect(80, 80, 40, 40);
g.setColor(c);
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TestWindowClose {
public static void main(String args[]) {
new MyFrame55("MyFrame");
}
}
class MyFrame55 extends Frame {
MyFrame55(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) {
setVisible(false);
System.exit(-1);
}
});
}
/*
* class MyWindowMonitor extends WindowAdapter { public void
* windowClosing(WindowEvent e) { setVisible(false); System.exit(0); } }
*/
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TestAnonymous {
Frame f = new Frame("haha");
TextField tf = new TextField(30);
public TestAnonymous() {
f.add(new Label("mouseDragged area"), "North");
f.add(tf, BorderLayout.SOUTH);
f.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {//鼠标按住拖动
String s = "位置:" + e.getX() + "," + e.getY() + ")";
tf.setText(s);
}
@Override
public void mouseMoved(MouseEvent e) {//鼠标移动
String s = "位置:" + e.getX() + "," + e.getY() + ")";
tf.setText(s);
}
});
f.addWindowListener(new WindowAdapter() {
@Override//重写windowClosing()
public void windowClosing(WindowEvent e) {
f.setVisible(false);
System.exit(-1);
}
});
f.setSize(300, 200);
f.setVisible(true);
}
public static void main(String args[]) {
TestAnonymous t = new TestAnonymous();
}
}
package java基础.GUI;
import java.awt.*;
import java.awt.event.*;
public class TestAnonymous2 {
Frame f = new Frame("Test");
TextField tf = new TextField(10);
Button b1 = new Button("Start");
public TestAnonymous2() {
f.add(b1, "North");
f.add(tf, "South");
b1.addActionListener(new ActionListener() {
private int i;
@Override
public void actionPerformed(ActionEvent e) {
/**
* getActionCommand()
返回与此动作相关的命令字符串。
*/
tf.setText(e.getActionCommand() + ++i);
}
});
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.pack();
f.setVisible(true);
}
public static void main(String args[]) {
new TestAnonymous2();
}
}