AWT -- (一)
万物皆对象 new 类!
1.包含了很多的类和接口!GUI【图形用户界面编程】
Eclipse:Java写的
2.元素:窗口、按钮、文本框
3.Java.awt
util、time、sql、security、rmi、nio、net、math、lang、io、beans、awt、applet
组件和容器
1.Frame
package com.kuang.lesson01;import java.awt.*;package com.kuang.lesson01;
import java.awt.*;
//GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame对象,JDK,看源码!
Frame frame = new Frame("我的第一个图像界面窗口");
//需要设置可见性 w h
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色Color
frame.setBackground(new Color(64,195,67));
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);
}
} 问题:发现窗口关闭不掉,停止Java程序运行!
尝试回顾封装
package com.kuang.lesson01;
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口
MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.cyan);
MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.GRAY);
MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.BLACK);
MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.blue);
}
}
class MyFrame extends Frame{
static int id = 0; //可能存在多个窗口,我们需要一个计数器
//无参同名构造器
public MyFrame(int x,int y,int w,int h,Color color){
//调用父类
super("MyFrame"+(++id));
setBackground(color);
setBounds(x,y,w,h);
setVisible(true);
}
} 2.面板panel
package com.kuang.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//Panel可以看成是一个空间,但是不能单独存在
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(40,161,35));
//panel 设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(193,15,60));
//frame.add(panel)
frame.add(panel);//看源码
frame.setVisible(true);
//监听事件,监听窗口关闭事件 system.exit(0);
//适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
} 解决了关闭问题
3.布局管理器
流式布局
package com.kuang.lesson01; import java.awt.*; public class TestFloeLayout { public static void main(String[] args) { Frame frame = new Frame(); //按钮-组件 Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); //设置为流式布局式 //居中frame.setLayout(new FlowLayout()); frame.setLayout(new FlowLayout(FlowLayout.LEFT)); frame.setSize(200,200); //把按钮添加上去 frame.add(button1); frame.add(button3); frame.add(button2); frame.setVisible(true); } }东西南北中
package com.kuang.lesson01; import java.awt.*; public class TestBorderLayout { public static void main(String[] args) { Frame frame = new Frame("TestBorderLayout"); Button east = new Button("East"); Button west = new Button("West"); Button south = new Button("South"); Button north = new Button("North"); Button center = new Button("Center"); frame.add(east,BorderLayout.EAST); frame.add(west,BorderLayout.WEST); frame.add(south,BorderLayout.SOUTH); frame.add(north,BorderLayout.NORTH); frame.add(center,BorderLayout.CENTER); frame.setSize(800,800); frame.setVisible(true); } }表格布局
import java.awt.*; public class TeatGridLayout { public static void main(String[] args) { Frame frame = new Frame(); Button btn1 = new Button("btn1"); Button btn2 = new Button("btn2"); Button btn3 = new Button("btn3"); Button btn4 = new Button("btn4"); Button btn5 = new Button("btn5"); Button btn6 = new Button("btn6"); frame.setLayout(new GridLayout(3,2)); frame.add(btn1); frame.add(btn2); frame.add(btn3); frame.add(btn4); frame.add(btn5); frame.add(btn6); frame.pack();//Java的函数 /*f.pack()做了这样一件事 f.setSize(f.getPreferredSize()); 在你没加f.pack()之前,f窗体的大小是(0,0) 当你加了以后,f的大小会被设置为最佳大小,也就是prefrredSize*/ frame.setVisible(true); } }

京公网安备 11010502036488号