我有一个代码,我应该在JPanel上返回矩形区域和周边。但是当我执行时根本没有任何事情发生。我怀疑在我的方法某处出现错误,我相信其余的都可以。生病了所有的帮助。 我只是要在JPanel中向您展示我的代码。
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Rektanglar extends JPanel {
Rektanglar r1 = new Rektanglar ();
@Override
public void paintComponent (Graphics g) {
super.paintComponent (g);
g.drawString ("Rektanglar",10,20);
this.setBackground(Color.WHITE);
g.setColor(Color.BLUE);
g.fillRect(r1.getX(),r1.getY(), r1.getWidth(), r1.getHeight());
}
public int Y;
public int X;
public int width;
public int height;
public int Perimeter;
public int Area;
Rektanglar (){
width = 10;
height = 10;
X = 0;
Y = 0;
}
public void Rectangle(int x, int y, int w, int h) {
X = x;
Y = y;
width = w;
height = h;
}
public void setX(int X ){
this.X = X;
}
public int getX(int X){
return X;
}
public void setY(int Y){
this.Y = Y;
}
public int getY( int Y){
return Y;
}
public int getWidth( int width){
return width;
}
public int getHeight(int height){
return height;
}
public int getPerimeter(){
return (width + width + height + height );
}
public int getArea(){
return (height * width);}
}
}
答案 0 :(得分:4)
如果您实际上尝试构造Rektanglar
的实例,则会因此而出现堆栈溢出:
public class Rektanglar extends JPanel {
Rektanglar r1 = new Rektanglar ();
...
}
该代码表示,为了创建一个实例,您需要创建另一个实例...这将创建另一个实例,等等。
根本不清楚为什么你有r1
,但我强烈建议你摆脱它......
我也怀疑这个:
public void Rectangle(int x, int y, int w, int h) {
X = x;
Y = y;
width = w;
height = h;
}
...意味着是一个构造函数,在这种情况下你必须把它写成:
public Rektanglar(int x, int y, int w, int h) {
X = x;
Y = y;
width = w;
height = h;
}
请注意,名称必须与类的名称相匹配,而未指定返回类型。
另外,我建议:
x
和y
而不是X
和Y
)。