How to remove drawing line in java?

The problem is how to delete old lines? I mean, so that only the current lines x and y are displayed on the screen, make the intersection between the two lines "follow" the mouse pointer.

This is the updated code:

import javax.swing.*;
import javax.*;
import java.awt.*;
import java.awt.Color;
import java.awt.Graphics.*;
import java.awt.event.*;
import javax.swing.UIManager;
public class SimpleGUI extends JFrame {
    public SimpleGUI() {
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
    }

    public void go() {
        Drawpanel = new Mypanel();
        JFrame frame = new JFrame("Chasing Line");
        JButton mybutton1 = new JButton("Please");
        JButton mybutton2 = new JButton("Help");
        JButton mybutton3 = new JButton("Me!!");
        Drawpanel.add(mybutton1); 
        Drawpanel.add(mybutton2);
        Drawpanel.add(mybutton3);

        frame.getContentPane().add(BorderLayout.CENTER, Drawpanel);
        frame.setSize(300,300);
        frame.setVisible(true);

        Drawpanel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                DrawpanelMouseMoved(evt);
            }
        }); 

    }

    public void DrawpanelMouseMoved(java.awt.event.MouseEvent evt) {
        xpos=evt.getX();
        ypos=evt.getY();
        System.out.println("Coordinates : X :"+ xpos+"Y: "+ypos);
        Drawpanel.paintImage(xpos,ypos);
    } 

    class Mypanel extends JPanel {
        public void paintImage(int xpost,int ypost){
            Graphics d = getGraphics();
            d.clearRect(0,0, this.getWidth(), this.getHeight());
            d.setColor(Color.black);
            d.drawLine(xpost, 0, xpost, this.getHeight());
            d.setColor(Color.red);
            d.drawLine(0, ypost, this.getWidth(),ypost);
            this.validate();
        }

    } // end the inner class 

    public static void main(String[] args){
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch(Exception e) {
            System.err.println("Look and feel not set");
        }

        SimpleGUI win = new SimpleGUI();
        win.go();
    }

    Mypanel Drawpanel;
    private int xpos=0;
    private int ypos=0;
}  // close SimpleGUI class

The question is, how can I save these 3 buttons without changing their state?

+3
source share
3 answers

The problem is, how can I delete the old lines ?, I mea, make only the current lines x and y on the screen, make the intersection between the two lines “follow” the mouse pointer.

  • Save all your lines that you want to save to LinkedList or similar.
  • , .
  • LinkedList.

, - :

  • , .
  • .

:

clearRect(int x, int y, int width, int height)
+7

d.clear(); Graphics d = getGraphics();, , , .

0

, getGraphics(). paintComponent().

.

, "", , .

0

Source: https://habr.com/ru/post/1744397/


All Articles