GUI01
GUI编程
组件
-
窗口
-
鼠标
-
面板
-
文本框
-
列表框
-
按钮
-
图片
-
监听事件
1,简介
GUI技术核心:Swing AWT
1,界面不美观
2,需要jre环境
AWT
AWT1
窗口
import java.awt.*;
public class test1 {
public static void main(String[] args) {
new MyFrame(100,100,200,200,Color.red);
new MyFrame(100,300,200,200,Color.red);
new MyFrame(300,100,200,200,Color.red);
new MyFrame(300,300,200,200,Color.red);
}
static class MyFrame extends Frame{
static int id = 0;//可能需要多个窗口
public MyFrame(int x,int y,int w,int h,Color color){
super("Myframe"+(++id));
setBounds(x,y,w,h);
setBackground(color);
setVisible(true);
}
}
}
面板Panel
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//面板Panel
public class Test2 {
public static void main(String[] args) {
//实例化一个窗口Frame
Frame frame = new Frame("阿托");
//实例化一个面板Panel
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
frame.add(panel);
//初始画窗口Frame
frame.setVisible(true);
//设置属性
frame.setBackground(new Color(1,1,1));
frame.setBounds(100,100,400,400);
//初始化面板Panel
//设置属性
panel.setBackground(new Color(91, 135, 23));
panel.setBounds(10,10,300,300);
//关闭
//适配器模式适配
frame.addWindowListener(new WindowAdapter() {
/**
* Invoked when a window is in the process of being closed.
* The close operation can be overridden at this point.
*
* @param e
*/
布局器管理
-
流式布局
import java.awt.*;
public class Test {
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.add(button1);
frame.add(button2);
frame.add(button3);
frame.setSize(300,200);
frame.setVisible(true);
}
}
-
东西南北中布局
import java.awt.*;
public class Test3 {
public static void main(String[] args) {
Frame frame = new Frame();
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.setVisible(true);
frame.setBounds(100,100,500,500);
}
}
-
表格式布局
mport java.awt.*;
public class TestGridlayless {
public static void main(String[] args) {
Frame frame = new Frame();
Button button1 = new Button("01");
Button button2 = new Button("02");
Button button3 = new Button("03");
Button button4 = new Button("04");
Button button5 = new Button("05");
frame.setLayout(new GridLayout(2,3));
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.setVisible(true);
frame.setSize(400,500);
}
}
事件监听
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test6 {
public static void main(String[] args) {
//按一个按钮然后发生一些事情
Frame frame = new Frame();
Button button = new Button();
MyAction action = new MyAction();
button.addActionListener(action);
frame.add(button);
frame.pack();
windowsClose(frame);
frame.setVisible(true);
}
private static void windowsClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
/**
* Invoked when a window is in the process of being closed.
* The close operation can be overridden at this point.
*
* @param e
*/
多个按钮实现统一个事件
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test7 {
public static void main(String[] args) {
//多个按钮共享一个实现
Frame frame = new Frame();
Button button1 = new Button("start");
Button button2 = new Button("stop");
MyActiontwo myAction = new MyActiontwo();
button1.addActionListener(myAction);
button2.addActionListener(myAction);
frame.setLayout(new BorderLayout());
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
frame.setVisible(true);
frame.pack();
}
}
class MyActiontwo implements ActionListener{
/**
* Invoked when an action occurs.
*
* @param e
*/
文本框事件监听
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test8 {
public static void main(String[] args) {
//输入框事件
new MyFrame();
}
}
class MyFrame extends Frame {
public MyFrame(){
TextField textField = new TextField();
Frame frame = new Frame();
frame.add(textField);
MyAction2 myAction2 = new MyAction2();
textField.addActionListener(myAction2);
textField.setEchoChar('*');
frame.setVisible(true);
frame.pack();
}
}
class MyAction2 implements ActionListener{
/**
* Invoked when an action occurs.
*
* @param e
*/
简易计算机
package com.atuo.test1;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalulator {
public static void main(String[] args) {
new Calulator();
}
}
class Calulator extends Frame{
/**
* Constructs a new instance of <code>Frame</code> that is
* initially invisible. The title of the <code>Frame</code>
* is empty.
*
* @throws HeadlessException when
* <code>GraphicsEnvironment.isHeadless()</code> returns <code>true</code>
* @see GraphicsEnvironment#isHeadless()
* @see Component#setSize
* @see Component#setVisible(boolean)
*/
public Calulator(){
//3个文本框
TextField num1 = new TextField(10);
TextField num2 = new TextField(10);
TextField num3 = new TextField(10);
//1个标签
Label label = new Label("+");
//1个按钮
Button button = new Button("=");
button.addActionListener(new MyCalulatorListener(num1,num2,num3));
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
class MyCalulatorListener implements ActionListener{
private TextField num1,num2,num3;
public MyCalulatorListener(TextField num1,TextField num2,TextField num3){
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}
/**
* Invoked when an action occurs.
*
* @param e
*/