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); //养成习惯 画笔用完将它还原到最初颜色————黑色 } }
目标:想要实现鼠标画画java
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); } } ); }