如何更新相应的jpanel中的2D矩形图

发布于 2025-02-10 01:22:33 字数 9792 浏览 2 评论 0 原文

我遇到了一个问题,即我的工作代码能够在jpanel drawpanel 给定的输入参数中显示矩形。但是,在尝试创建一个新的矩形时,该新矩形将添加到图纸中。因此,现在我有两个矩形,而不仅仅是更新的矩形。我想知道是否有人可以帮助我确定为什么矩形又一个接一个地出现,而不是只显示一个新更新的矩形。为了更好地说明我的问题,这是一个图像:

“ nofollow noreferrer”>“ nofollow noreferrer”> restate按钮在这里是矩形的创建,但是每次我更改参数时,都会创建一个新的矩形。

这是我的类 die 创建的代码,该代码从JTEXTFIELDS中提取双倍,并创建一个2DDRECTANGLE。

class die extends JPanel implements ActionListener{
  @Override
  protected void paintComponent(Graphics g){
  super.paintComponent(g);
 
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    //parsing double values from jtextfields
  
    double xcor = Double.parseDouble(xcoorin.getText()); 
    double ycor = Double.parseDouble(ycoorin.getText());
    double lengthdie = Double.parseDouble(Die_L.getText());
    double widthdie = Double.parseDouble(Die_W.getText());
    //drawing the rectangle
    Rectangle2D rect = new Rectangle2D.Double(xcor, ycor, widthdie, lengthdie);
    ((Kpackage) drawpanel).draw(rect);
  }
}

ActionListener listen = new die();
locate.addActionListener(listen);

下面是创建JPANEL drawpanel 的代码,该代码是通过继承2D图的方法Kpackage创建JPANEL的地方。添加的绘制板的代码如下:

public class MyFrame{

public MyFrame(){

//Creating new panels for the content window "Frame"
JPanel cyanpanel = new JPanel();
JPanel orangepanel = new JPanel();
JPanel greenpanel = new JPanel();
JPanel magentapanel = new JPanel();
JPanel whitepanel = new JPanel();
JPanel graypanel = new JPanel();
JPanel drawpanel = new Kpackage(); //inheriting information from my panel which is the 2D drawing
JPanel dieinputpanel = new JPanel();
JPanel diepanel = new JPanel();

kpackage()的代码; 在下面,此代码显示较大的图形,该图形限制了较小的矩形:

public class Kpackage extends JPanel{

private ArrayList<Rectangle2D> rectangles = new ArrayList<>();

  public void draw(Rectangle2D rect){
    //Save the new rectangle to the list
    rectangles.add(rect);
    //Trigger a repaint which will call the paintComponent method and draw all the rectangles
    repaint();
}

   @Override
   public void paintComponent(Graphics g) {
       super.paintComponent(g);
       Graphics2D g2d = (Graphics2D) g;
       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
       Dimension size = this.getSize();

//Dimensions and variables for the package
       double scale = 30; //scale of the k package

       double aTO_4L = 1.42*scale;
       double bTO_4L = 0.30*scale;
       double cTO_4L = 5.99*scale;
       double dTO_4L = 3.00*scale;
       double d1TO_4L = 1.5*scale;
       double d2TO_4L = 2.60*scale;
       double eTO_4L = 7.26*scale;
       double fTO_4L = 0.64*scale;
       double gTO_4L = 7.18*scale;
       double hTO_4L = 0.38*scale;
       double iTO_4L = 7.79*scale;
       double jTO_4L = 13.26*scale;
       double kTO_4L = 3.78*scale;
       double dia_inner = 3.58*scale;
       double dia_outer = 7.18*scale;
       double tot_width=jTO_4L+2*hTO_4L;
       double tot_height=iTO_4L+eTO_4L+d1TO_4L;
       double x = (size.width/2);
       double y = (size.height/2);

//creating the K package envelope

     g2d.draw(new Line2D.Double(x-cTO_4L/2-aTO_4L, y-eTO_4L-d1TO_4L, x-cTO_4L/2,y-eTO_4L-d1TO_4L ));
     g2d.draw(new Line2D.Double( x-cTO_4L/2,y-eTO_4L-d1TO_4L ,x-cTO_4L/2,y-eTO_4L-d1TO_4L +bTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2,y-eTO_4L-d1TO_4L +bTO_4L,x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L+bTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L+bTO_4L,x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L,y-eTO_4L-d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L));
     g2d.draw(new Line2D.Double(x+jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y,x-jTO_4L/2-hTO_4L,y));
     g2d.draw(new Line2D.Double(x-jTO_4L/2-hTO_4L,y,x-jTO_4L/2-hTO_4L,y-eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2-hTO_4L,y-eTO_4L,x-jTO_4L/2-hTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Ellipse2D.Double(x-dia_inner/2,y-dia_inner/2-kTO_4L,dia_inner,dia_inner));
     g2d.draw(new Ellipse2D.Double(x-dia_outer/2,y-dia_outer/2-kTO_4L,dia_outer,dia_outer));

//creating the 4 leg leads 

//variables and names
    
    double D_lead = 2.529*scale;
    double S_lead = 4.770*scale;
    double K_lead=1.5*scale;
    double G_lead=2.080*scale;


    double S_p1=1.1*scale;
    double S_p2=4.270*scale;
    double S_p3=0.940*scale;
    double S_p4=2.630*scale;
    double S_rad=0.5*scale;
    
    double lead_w=1.2*scale;
    double lead_h=1.6*scale;

    double K_p1=0.32*scale;
    double K_p2=1.5*scale;
    double K_p3=0.620*scale;
    
    double G_p1=0.880*scale;

    double length_lead=3.0*scale;

    double dist_1=0.178*scale;
    double dist_2=0.450*scale;
    double dist_3=0.720*scale;
    double dist_4=0.4*scale;

 //Creating the lead positions and dimensions

 //Drawing D LEAD

 g2d.draw(new Line2D.Double(x-jTO_4L/2,y+iTO_4L,x-jTO_4L/2,y+iTO_4L+length_lead));
 g2d.draw(new Line2D.Double(x-jTO_4L/2+D_lead,y+iTO_4L,x-jTO_4L/2+D_lead,y+iTO_4L+length_lead));

  //Drawing G LEAD
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+length_lead));


 //Drawing K LEAD
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+length_lead));

 //Drawing S LEAD

 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p2,y+iTO_4L+dist_1));

 //connect before end point and after start point
 g2d.draw(new Arc2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1,2*S_rad,2*S_rad,90, 90,Arc2D.OPEN));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+S_rad,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+length_lead));


for (Rectangle2D rectangle : rectangles){
  //Draw a basic rectangle, just as proof that this works
 g2d.draw(rectangle);

   }}}

注意:这是我以前的以前的延续问题。链接在这里:

感谢您的帮助!期待每个人的回应。

I am running into an issue where I have a working code that is able to display a rectangle in a Jpanel drawpanel given input parameters from Jtextfields. However when trying to create a new rectangle, this new rectangle is added to the drawing. So now I have two rectangles instead of only the updated one. I was wondering if anyone could help me identify why the rectangles are showing up one after the other instead of having it only display one newly updated rectangle. In order to illustrate my question better, here is an image:

The locate button here is what creates the rectangle, but everytime I change parameters a new rectangle is created.

Here is my code for the class die created which extracts doubles from jtextfields and creates a 2Drectangle.

class die extends JPanel implements ActionListener{
  @Override
  protected void paintComponent(Graphics g){
  super.paintComponent(g);
 
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    //parsing double values from jtextfields
  
    double xcor = Double.parseDouble(xcoorin.getText()); 
    double ycor = Double.parseDouble(ycoorin.getText());
    double lengthdie = Double.parseDouble(Die_L.getText());
    double widthdie = Double.parseDouble(Die_W.getText());
    //drawing the rectangle
    Rectangle2D rect = new Rectangle2D.Double(xcor, ycor, widthdie, lengthdie);
    ((Kpackage) drawpanel).draw(rect);
  }
}

ActionListener listen = new die();
locate.addActionListener(listen);

Below, is the code that creates the JPanel drawpanel which is where the JPanel is created by inheriting the method Kpackage which is a 2D Drawing. The code for the drawpanel being added is below:

public class MyFrame{

public MyFrame(){

//Creating new panels for the content window "Frame"
JPanel cyanpanel = new JPanel();
JPanel orangepanel = new JPanel();
JPanel greenpanel = new JPanel();
JPanel magentapanel = new JPanel();
JPanel whitepanel = new JPanel();
JPanel graypanel = new JPanel();
JPanel drawpanel = new Kpackage(); //inheriting information from my panel which is the 2D drawing
JPanel dieinputpanel = new JPanel();
JPanel diepanel = new JPanel();

The code for Kpackage(); is here below, this code displays the larger drawing that is bounding the smaller rectangles:

public class Kpackage extends JPanel{

private ArrayList<Rectangle2D> rectangles = new ArrayList<>();

  public void draw(Rectangle2D rect){
    //Save the new rectangle to the list
    rectangles.add(rect);
    //Trigger a repaint which will call the paintComponent method and draw all the rectangles
    repaint();
}

   @Override
   public void paintComponent(Graphics g) {
       super.paintComponent(g);
       Graphics2D g2d = (Graphics2D) g;
       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
       Dimension size = this.getSize();

//Dimensions and variables for the package
       double scale = 30; //scale of the k package

       double aTO_4L = 1.42*scale;
       double bTO_4L = 0.30*scale;
       double cTO_4L = 5.99*scale;
       double dTO_4L = 3.00*scale;
       double d1TO_4L = 1.5*scale;
       double d2TO_4L = 2.60*scale;
       double eTO_4L = 7.26*scale;
       double fTO_4L = 0.64*scale;
       double gTO_4L = 7.18*scale;
       double hTO_4L = 0.38*scale;
       double iTO_4L = 7.79*scale;
       double jTO_4L = 13.26*scale;
       double kTO_4L = 3.78*scale;
       double dia_inner = 3.58*scale;
       double dia_outer = 7.18*scale;
       double tot_width=jTO_4L+2*hTO_4L;
       double tot_height=iTO_4L+eTO_4L+d1TO_4L;
       double x = (size.width/2);
       double y = (size.height/2);

//creating the K package envelope

     g2d.draw(new Line2D.Double(x-cTO_4L/2-aTO_4L, y-eTO_4L-d1TO_4L, x-cTO_4L/2,y-eTO_4L-d1TO_4L ));
     g2d.draw(new Line2D.Double( x-cTO_4L/2,y-eTO_4L-d1TO_4L ,x-cTO_4L/2,y-eTO_4L-d1TO_4L +bTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2,y-eTO_4L-d1TO_4L +bTO_4L,x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L+bTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L+bTO_4L,x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L,y-eTO_4L-d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L,y-eTO_4L-d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L,x-cTO_4L/2+cTO_4L+aTO_4L+d2TO_4L-hTO_4L,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L));
     g2d.draw(new Line2D.Double(x+jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L+iTO_4L,x-jTO_4L/2,y-eTO_4L-d1TO_4L+d1TO_4L+eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2,y,x-jTO_4L/2-hTO_4L,y));
     g2d.draw(new Line2D.Double(x-jTO_4L/2-hTO_4L,y,x-jTO_4L/2-hTO_4L,y-eTO_4L));
     g2d.draw(new Line2D.Double(x-jTO_4L/2-hTO_4L,y-eTO_4L,x-jTO_4L/2-hTO_4L+d2TO_4L,y-eTO_4L-d1TO_4L));
     g2d.draw(new Ellipse2D.Double(x-dia_inner/2,y-dia_inner/2-kTO_4L,dia_inner,dia_inner));
     g2d.draw(new Ellipse2D.Double(x-dia_outer/2,y-dia_outer/2-kTO_4L,dia_outer,dia_outer));

//creating the 4 leg leads 

//variables and names
    
    double D_lead = 2.529*scale;
    double S_lead = 4.770*scale;
    double K_lead=1.5*scale;
    double G_lead=2.080*scale;


    double S_p1=1.1*scale;
    double S_p2=4.270*scale;
    double S_p3=0.940*scale;
    double S_p4=2.630*scale;
    double S_rad=0.5*scale;
    
    double lead_w=1.2*scale;
    double lead_h=1.6*scale;

    double K_p1=0.32*scale;
    double K_p2=1.5*scale;
    double K_p3=0.620*scale;
    
    double G_p1=0.880*scale;

    double length_lead=3.0*scale;

    double dist_1=0.178*scale;
    double dist_2=0.450*scale;
    double dist_3=0.720*scale;
    double dist_4=0.4*scale;

 //Creating the lead positions and dimensions

 //Drawing D LEAD

 g2d.draw(new Line2D.Double(x-jTO_4L/2,y+iTO_4L,x-jTO_4L/2,y+iTO_4L+length_lead));
 g2d.draw(new Line2D.Double(x-jTO_4L/2+D_lead,y+iTO_4L,x-jTO_4L/2+D_lead,y+iTO_4L+length_lead));

  //Drawing G LEAD
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_p1,y+iTO_4L+dist_1+length_lead));


 //Drawing K LEAD
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p3,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1,y+iTO_4L+dist_1+length_lead));

 //Drawing S LEAD

 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p2,y+iTO_4L+dist_1));

 //connect before end point and after start point
 g2d.draw(new Arc2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1,2*S_rad,2*S_rad,90, 90,Arc2D.OPEN));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+S_rad,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_p3,y+iTO_4L+dist_1+length_lead));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+lead_h));
 g2d.draw(new Line2D.Double(x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+lead_h,x+jTO_4L/2-dist_2-G_lead-dist_3-K_p2-K_p1-dist_4-S_rad-S_p2+S_p4,y+iTO_4L+dist_1+length_lead));


for (Rectangle2D rectangle : rectangles){
  //Draw a basic rectangle, just as proof that this works
 g2d.draw(rectangle);

   }}}

NOTE: This is the continuation of my previous question. The link is here:
Drawing a 2D rectangle from Jtextfield inputs for GUI in Java

Thanks for the help! Looking forward to everyone's response.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

镜花水月 2025-02-17 01:22:33

问题在于,您将每个矩形添加到列表中,最后打印整个列表。如果您只想要一个矩形,请删除列表并更新rettangle2d的单个实例。

您在这里添加矩形。

private ArrayList<Rectangle2D> rectangles = new ArrayList<>();

public void draw(Rectangle2D rect){
    //Save the new rectangle to the list
    rectangles.add(rect);
    //Trigger a repaint which will call the paintComponent method and draw all the rectangles
    repaint();
}

每次在这里打印全部。

for (Rectangle2D rectangle : rectangles){
  //Draw a basic rectangle, just as proof that this works
      g2d.draw(rectangle);
}

The problem is that you are adding each rectangle to the List and at the end, printing out the entire list. If you only want one rectangle, then remove the list and update a single instance of Rectangle2D.

You add the rectangle here.

private ArrayList<Rectangle2D> rectangles = new ArrayList<>();

public void draw(Rectangle2D rect){
    //Save the new rectangle to the list
    rectangles.add(rect);
    //Trigger a repaint which will call the paintComponent method and draw all the rectangles
    repaint();
}

Each time you print them all here.

for (Rectangle2D rectangle : rectangles){
  //Draw a basic rectangle, just as proof that this works
      g2d.draw(rectangle);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文