how to draw rectangle on java applet using mouse drag event

前端 未结 3 2006
北海茫月
北海茫月 2021-01-21 11:19

i am using java. i want to draw rectangle based on mousedrag event. if user dragging the mouse, then the rectangle on the applet should increase or decrease basing on current mo

3条回答
  •  野的像风
    2021-01-21 11:50

    My question was about create a select rectangle invert mouse click position, but, in the end I got make this with this method:

    ...     //to set the selection area
        private int iniSelX;
        private int iniSelY;
        private int endSelX;
        private int endSelY;
    
        private JPanel myJPanel = new JPanel() {
    
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.setColor(Color.WHITE);
                g.fillRect(0, 0, this.getWidth(), this.getHeight());
    
                g.setColor(Color.red);
                g.drawLine(260, 5, 260, 260);
    
                g.setColor(Color.BLUE);
    
                //verify if go draw the rectangle
                if (iniSelX != 0 || endSelX != 0) {
                    boolean revertX = iniSelX < endSelX;
                    boolean revertY = iniSelY < endSelY;
    
                    //Simple way
                    //g.drawRect(iniSelX, iniSelY, endSelX - iniSelX, endSelY - iniSelY);
    
                    //reverse way
                    g.drawRect(revertX ? iniSelX : endSelX, revertY ? iniSelY : endSelY,
                            revertX ? endSelX - iniSelX : iniSelX - endSelX, revertY ? endSelY - iniSelY : iniSelY - endSelY);
                }
            }
        }; ...
            addMouseMotionListener(new MouseMotionListener() {
    
                @Override
                public void mouseDragged(MouseEvent m) {
                    //update selection area
                    endSelX = m.getX();
                    endSelY = m.getY();
    
                    repaint();
                }
    
                @Override
                public void mouseMoved(MouseEvent m) {
                    repaint();
                }
            });
    
            addMouseListener(new MouseListener() {
    
     ...
                @Override
                public void mousePressed(MouseEvent e) {
                   //start  drawing the selection
                    iniSelX = e.getX() - 15;
                    iniSelY = e.getY() - 20;
                }
    
                @Override
                public void mouseReleased(MouseEvent e) {
                    //start  drawing the selection
                    iniSelX = 0;
                    iniSelY = 0;
                    endSelX = 0;
                    endSelY = 0;
                }
    
    ...
            });
    
        }
    
        public void log() {
            System.out.println("iniSelX" + iniSelX);
            System.out.println("iniSelY" + iniSelY);
            System.out.println("endSelX" + endSelX);
            System.out.println("endSelY" + endSelY);
        } ...
    

    I hope this is useful.

提交回复
热议问题