当我传递 class 的变量时,paintComponent 方法不绘制任何东西
paintComponent method doesn't draw anything when I pass class's variable
我的java代码:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
public class ConcentricCircles2D extends JPanel {
double myX = 0;
double myY = 0;
int myWidth = getWidth();
int myHeight = getHeight();
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.BLUE);
g2.setStroke(new BasicStroke(5.0f));
g2.draw(new Ellipse2D.Double(myX, myY, myWidth, myHeight));
}
当我在 paintComponent 方法中使用局部变量时,它工作得很好。我该如何解决这个问题? (我在单独的 class 上创建面板。)
myWidth
和 myHeight
值仅在实例化 ConcentricCircles2D
对象时设置。此时它的重量和高度为零。
所以这句话
Ellipse2D.Double(myX, myY, myWidth, myHeight)
等于
Ellipse2D.Double(0, 0, 0, 0)
它根本不会绘制椭圆。
替换句子
g2.draw(new Ellipse2D.Double(myX, myY, myWidth, myHeight));
用你原来的
g2.draw(new Ellipse2D.Double(0, 0, getWidth(), getHeight()));
并且将绘制一个以父 JFrame
为中心的椭圆,如果您调整其父的大小,其尺寸将发生变化。
我的java代码:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
public class ConcentricCircles2D extends JPanel {
double myX = 0;
double myY = 0;
int myWidth = getWidth();
int myHeight = getHeight();
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.BLUE);
g2.setStroke(new BasicStroke(5.0f));
g2.draw(new Ellipse2D.Double(myX, myY, myWidth, myHeight));
}
当我在 paintComponent 方法中使用局部变量时,它工作得很好。我该如何解决这个问题? (我在单独的 class 上创建面板。)
myWidth
和 myHeight
值仅在实例化 ConcentricCircles2D
对象时设置。此时它的重量和高度为零。
所以这句话
Ellipse2D.Double(myX, myY, myWidth, myHeight)
等于
Ellipse2D.Double(0, 0, 0, 0)
它根本不会绘制椭圆。
替换句子
g2.draw(new Ellipse2D.Double(myX, myY, myWidth, myHeight));
用你原来的
g2.draw(new Ellipse2D.Double(0, 0, getWidth(), getHeight()));
并且将绘制一个以父 JFrame
为中心的椭圆,如果您调整其父的大小,其尺寸将发生变化。