鼠标,窗口,键盘监听

画笔

举例:

class MyPaint extends Frame{

    public void loadFrame(){
        setBounds(200,200,600,500);
        setVisible(true);

    }
    //画笔
    @Override
    public void paint(Graphics g) {

        //画笔有有颜色,可以画画
        g.setColor(Color.BLUE);
        g.drawOval(100,100,100,100);//空心圆
        g.fillOval(200,100,100,100);//实心圆

        g.setColor(Color.GREEN);
        g.fillRect(200,200,200,200);//矩形
        //画笔用完给他还原成最初的颜色即黑色
    }
}

运行结果:
画笔

鼠标监听

思路:
paint
举例:

public class MouseListener {
    public static void main(String[] args) {
        new MyFrame("画图");

    }
}
class MyFrame extends Frame{
    //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
    ArrayList points;
    public MyFrame(String title){
        super(title);//调用这个方法的时候给他传一个标题
        setBounds(200,200,500,300);
        //存储鼠标点击的这些点
       points= new ArrayList<>() ;
       setVisible(true);
        //监听鼠标,这个窗口
        this.addMouseListener(new MouseListener());
    }

    @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);
}



    //适配器模式,内部类
    private class MouseListener extends MouseAdapter{
        //鼠标,按下,弹起,按下不放

        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame Frame = (MyFrame) e.getSource();//拿到这个窗口

            //点击鼠标的时候,就会在界面上产生一个点
            //这个点就是鼠标的点
            addPaint(new Point(e.getX(),e.getY()));
            //每次点击鼠标都要重画一次
            repaint();//刷新



        }
    }
}

运送结果为:
point

窗口监听

一般使用激活和关闭窗口
举例:

public class window {
    public static void main(String[] args) {
        new WindowFrame();

    }
}
class WindowFrame extends Frame{
    //窗体设置
    public WindowFrame(){
        setBackground(Color.BLACK);
        setBounds(100,100,200,200);
        setVisible(true);
        //addWindowListener(new WindowListener());//添加监听事件
        this.addWindowListener(
                new WindowAdapter() {
                    //匿名内部类,一般建议使用这个
                    //关闭窗口
                    @Override
                    public void windowClosing(WindowEvent e) {
                        System.out.println("windowClosing");
                        System.exit(0);
                    }
                    //激活窗口
                    @Override
                    public void windowActivated(WindowEvent e) {
                        WindowFrame windowFrame=(WindowFrame) e.getSource();
                        windowFrame.setTitle("被激活了");
                        System.out.println("windowActivated");
                    }
                }
        );

    }

}

运行结果
窗口监听

键盘监听

根据按下的键盘不同,产生不同的结果
举例:

public class KeyListener {
    public static void main(String[] args) {
        new KeyFrame();
    }
}
class KeyFrame extends Frame{
    public KeyFrame(){
        setBounds(1,2,300,400);
        setVisible(true);

        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                //获得键盘上的按键
                int keyCode = e.getKeyCode();
                if (keyCode==KeyEvent.VK_UP){
                    System.out.println("up");

                }
            }
        });

    }

发布了24 篇原创文章 · 获赞 5 · 访问量 530

猜你喜欢

转载自blog.csdn.net/weixin_46178009/article/details/105393710