1.awt:java中的组件,包含GUI的很多类和接口:在java.awt.*中
frame:窗口:
public class myFrame extends Frame {
public static int id = 0;
public myFrame(int x,int y,int w,int h,Color color){//这里的color是个类
super("这是我第" + (++id) + "个frame");//title,frame的构造函数
setLayout(null);//布局要默认为null,否则面板的背景会全部覆盖窗口
setBounds(x,y,w,h);//设置起始位置坐标(x,y),窗口大小(w,h);
setVisible(true);//可视化
setBackground(color);//背景颜色
setResizable(false);//固定窗口大小
addWindowListener(new WindowAdapter() {//监听事件,在点叉的时候退出程序,适配器模式,只用重写需要的方法
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
panel:面板(嵌套在窗口里)操作与窗口相同
import java.awt.*;
public class mypanel extends Panel{
public mypanel(int x,int y,int w,int h,Color color){
setBounds(x,y,w,h);
setBackground(color);
}
}
布局:setLayout()
有三种:流式布局,东西南北中,表格布局
流式结构 FlowLayout()
Button bt1 = new Button("bt1");
Button bt2 = new Button("bt2");
Button bt3 = new Button("bt3");
myframe1.setLayout(new FlowLayout());//居中,靠左为new FlowLayout(FlowLayout.left),靠右为right
myframe1.add(bt1);
myframe1.add(bt2);
myframe1.add(bt3);
东西南北中BorderLayout()
Button bt1 = new Button("east");
Button bt2 = new Button("west");
Button bt3 = new Button("south");
Button bt4 = new Button("north");
Button bt5 = new Button("center");
myframe1.setLayout(new BorderLayout());
myframe1.add(bt1,BorderLayout.EAST);
myframe1.add(bt2,BorderLayout.WEST);
myframe1.add(bt3,BorderLayout.SOUTH);
myframe1.add(bt4,BorderLayout.NORTH);
myframe1.add(bt5,BorderLayout.CENTER);
表格结构Gridlayout()
Button bt1 = new Button("bt1");
Button bt2 = new Button("bt2");
Button bt3 = new Button("bt3");
Button bt4 = new Button("bt4");
Button bt5 = new Button("bt5");
Button bt6 = new Button("bt6");
myframe1.setLayout(new GridLayout(3,2));//三行两列
myframe1.add(bt1);
myframe1.add(bt2);
myframe1.add(bt3);
myframe1.add(bt4);
myframe1.add(bt5);
myframe1.add(bt6);
事件监听:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class myActionlistener implements ActionListener {
@Override//重写方法,因为Actionlistener是个接口
public void actionPerformed(ActionEvent e) {
System.out.println(e.getModifiers());//e是一个对象,所以可以用.来调用方法
}
}
文本框:TextField()//TextArea()是文本域
通过事件获取文本框输入内容:
public class myActionlistener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
TextField wenben = (TextField) e.getSource();
System.out.println(wenben.getText());
}
}
画笔:重写方法paint()
@Override
public void paint(Graphics g) {
g.setColor(Color.red);//设置颜色
g.draw3DRect(100,100,200,200,true);//画一个图形
}
三大监听:窗口,鼠标,键盘
//用适配器模式可以减少代码量---》Adapater()
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
myFrame frame = (myFrame) e.getSource();//把object类的对象强制转换成myFrame
frame.addPoint(new Point(e.getX(),e.getY()));//获得的是当前鼠标的坐标
}
});
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();//
if(e.getKeyCode() == KeyEvent.VK_UP){//都是编码类型,所以用getKeyCode()获取
System.out.println("VK_UP");
}
}
});
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
3.swing
操作和awt差不多,只是把一些东西封装起来,可以更方便的调用
引入了容器的概念,改变颜色需要通过改变容器的颜色去实现。
其关闭窗口的事件被简化成了
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
需要使用某一特定组件,上网查询即可实现