从Java中的Jtextfield输入中绘制一个2D矩形
我目前正在Java开发GUI。在这种情况下,我试图在JPanel中显示一个名为drawpanel
的jpanel中的2D矩形。为了做到这一点,我创建了一个名为die
的类,并初始化了paintcomponent
和actionperformed
方法。在Action Performed
中,我从JTEXTFIELDS中解析了双打,这将是我的2D矩形的输入。然后,我继续绘制矩形,最后将其连接到drawpanel
。问题在于drawpanel.draw(rect)
给我一个错误,特别是在draw(rect)
中。此错误阻止其绘制2D矩形。我想知道是否有人可以帮助我确定我遇到的问题。此外,我还有几个问题:
- 我的覆盖是否放在正确的行(位置)中?
- 是否有一种更简单的方法来达到我计划的相同结果? 提前致谢!任何输入都非常感谢。我在下面附上了我的代码。这不是整个代码,因为我开发的GUI很长。但是,如果需要更多的代码才能理解问题,请随时要求它!
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);
drawpanel.draw(rect);
}
}
ActionListener listen = new die();
locate.addActionListener(listen);
为了解释drawpanel的来源:
这是通过继承方法kpackage
创建的JPANEL,这是创建的2D图。添加的drawpanel的代码如下:
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();
然后,kpackage()
的代码在这里:
public class Kpackage extends JPanel{
@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));
}}
I am currently developing a GUI in Java. I am trying to display a 2D rectangle in a Jpanel called drawpanel
in this case. In order to do this, I have created a class called die
and initialized the paintComponent
and an actionPerformed
method. In the actionPerformed
I have parsed the doubles from the Jtextfields which will be the inputs of my 2D rectangle. Then I proceeded to draw the rectangle and finally attach it to drawpanel
. The problem is that drawpanel.draw(rect)
is giving me an error, specifically in draw(rect)
. This error prevents it from drawing a 2D rectangle. I was wondering if anyone could please help me identify the issue I am running into here. In addition, I have a couple of questions:
- Are my overrides placed in the correct line (location)?
- Is there a simpler way of arriving to the same outcome I have planned?
Thanks in advance! Any input is much appreciated. I have attached my code below. It is not the entire code, since the GUI I have developed is quite long. But if more code is required in order to understand the question feel free to ask for it!
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);
drawpanel.draw(rect);
}
}
ActionListener listen = new die();
locate.addActionListener(listen);
In order to explain where drawpanel comes from:
It is a Jpanel created by inheriting the method Kpackage
which is a 2D Drawing created. 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();
And then, the code for Kpackage()
is here:
public class Kpackage extends JPanel{
@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));
}}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
扩展我的评论。要完成这项工作,您需要做几件事:
将Draw方法添加到
kpackage
类,该类接受ARectangle2D
作为输入,例如Sopublic> public void draw(Rectangle2d rect){...}
,这将修复您的初始错误。在您的
kpackage
类中创建一个可以存储矩形arrayList< rectangle2d> gt;的类变量。矩形= new arraylist<>();
在绘制方法中,将输入的矩形保存到arrayList中,然后调用
repaint();
>
现在的技巧是
paintcomponent
方法必须循环循环矩形列表在阵列列表中并相应地绘制每个列表。这是Kpackage类可能会看起来像所有上述所有操作的样子:
用法将与您在Action Perperformed方法中的使用情况完全一样:
To expand on my comment. To make this work you need to do several things:
Add a draw method to the
Kpackage
class that accepts aRectangle2D
as an input like sopublic void draw(Rectangle2D rect){...}
, this will fix your initial error.Create a class variable inside your
Kpackage
class that can store rectanglesArrayList<Rectangle2D > rectangles = new ArrayList<>();
In the draw method save the inputted rectangle to the ArrayList, then call
repaint();
Now the trick here is that the
paintComponent
method MUST loop the list of rectangles in the ArrayList and draw each one accordingly.Here is what the Kpackage class might look like if we did all of the above:
And usage would be exactly as you already have it inside your actionPerformed method: