gpt4 book ai didi

java - 当我传递类的变量时,paintComponent 方法不绘制任何东西

转载 作者:行者123 更新时间:2023-11-30 10:39:54 25 4
gpt4 key购买 nike

我的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 方法中使用局部变量时,它工作得很好。我该如何解决这个问题? (我在单独的类上创建面板。)

最佳答案

myWidthmyHeight 值仅在实例化 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 - 当我传递类的变量时,paintComponent 方法不绘制任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39115588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com