画笔基础用法
import java.awt.*;
public class TestPaint {
public static void main(String[] args) {
new MyPaint().LoadFrame();
}
}
class MyPaint extends Frame {
public void LoadFrame(){
setBounds(200,200,600,500);
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g) {
//画笔 要有颜色 可以画画
g.setColor(new Color(11, 60,89));
g.drawOval(100,100,100,100);//空心的圆
g.fillOval(100,100,100,100);//实心的圆
g.setColor(Color.gray);
g.fill3DRect(300,300,100,100,false);
//养成习惯 画笔用完将它还原到最初颜色————黑色
}
}
鼠标监听
目标:想要实现鼠标画画
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
//测试鼠标监听事件
public class TestMouseListener {
public static void main(String[] args) {
new MyFrame1("画图");
}
}
//定义自己的类
class MyFrame1 extends Frame{
//画画需要 画笔 需要监听鼠标的当前位置 需要集合来存储这个点
ArrayList points;
public MyFrame1(String title) {
super(title);
setBounds(200,200,400,300); //设置画板
//存鼠标点击的点
points=new ArrayList<>(); //把属性提出去,提高调用的作用范围
//鼠标监听器 针对整个窗口监听
this.addMouseListener(new MyMouseListener());
setVisible(true);
}
@Override //重写画笔 监听鼠标事件
public void paint(Graphics g) {
Iterator iterator=points.iterator(); //迭代器 实现动态
while (iterator.hasNext()){
Point point= (Point) iterator.next();
g.setColor(Color.blue);
g.fillOval(point.x,point.y,10,10); //笔头设置
}
}
//添加一个点到界面上
public void addPaint(Point point){
points.add(point);
}
//适配器模式 用extends MouseAdapter而不是implements MouseListener
private class MyMouseListener extends MouseAdapter {
//鼠标 按下,弹起,按住不放
@Override
public void mousePressed(MouseEvent e) {
MyFrame1 frame= (MyFrame1) e.getSource();
//我们点击时,就会在界面产生一个点
//这个点就是鼠标的点
frame.addPaint(new Point(e.getX(),e.getY()));
//每次点击鼠标都需要重新画一遍
frame.repaint(); //刷新
}
}
}
窗口监听
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}
class WindowFrame extends Frame{
public WindowFrame() {
setBackground(Color.pink);
setBounds(100,100,200,200);
setVisible(true);
// addWindowListener(new MyWindowListener()); 不提倡另外写一个
this.addWindowListener( //提倡这种写匿名内部类的方法
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) { //关闭窗口
System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) { //激活窗口
System.out.println("Active");
}});}}
键盘监听
class KeyFrame extends Frame{
public KeyFrame() {
setBackground(Color.pink);
setBounds(200,200,300,300);
setVisible(true);
this.addKeyListener(
new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
super.keyTyped(e);
}
@Override
public void keyPressed(KeyEvent e) {
//获得键盘按下的是哪个
int keyCode=e.getKeyCode();//不需要记录这个数值,直接用静态属性VK_XXX
if(e.getKeyCode()==KeyEvent.VK_UP) {
System.out.println("你按下上键");
}
//根据按下不同键产生不同结果
}
@Override
public void keyReleased(KeyEvent e) {
super.keyReleased(e);
}
}
);
}