gpt4 book ai didi

java - 从子类到父类(super class)获取浮点属性

转载 作者:行者123 更新时间:2023-12-02 06:16:16 24 4
gpt4 key购买 nike

我正在创建一个类似于学校应用程序的绘画项目,在我当前的代码中,我有几个子类和一个 super 类。 super 应该保存要绘制的形状的数组,每个形状对象应该是它自己的子类,我稍后必须将其放入数组中并从应用程序调用。我必须使用 JDesktopPane 和 JInternalFrame,我不能使用 Arraylists,而且我目前一直在尝试将 RectDraw 子类的 Float 转换为我的 super 。所有这一切,最后将这些工具嵌套在一个名为 MyShapes 的 super 文件夹中。欢迎任何帮助。我不太使用 jdesktopPane 并且我不擅长转换。

        public class myShapes {

public void paint(Graphics g) {

graphSettings = (Graphics2D)g;
graphSettings.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
graphSettings.setStroke(new BasicStroke(4));

Iterator<Color> strokeCounter = shapeStroke.iterator();
Iterator<Color> fillCounter = shapeFill.iterator();
Iterator<Float> transCounter = transPercent.iterator();

for (Shape s : shapes){
graphSettings.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, transCounter.next()));
graphSettings.setPaint(strokeCounter.next());
graphSettings.draw(s);
graphSettings.setPaint(fillCounter.next());
graphSettings.fill(s);
}


if (drawStart != null && drawEnd != null){

graphSettings.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.40f));
graphSettings.setPaint(Color.LIGHT_GRAY);

Shape aShape = null;

if (currentAction == 2){
RectDraw drawRectangle = new RectDraw();
aShape = drawRectangle(x1, y1, x2, y2);
}
else if (currentAction == 3){
CircleDraw drawEllipse = new CircleDraw();
aShape = drawEllipse(x1, y1, x2, y2);
}
else if (currentAction == 4) {
LineDraw drawLine = new LineDraw();
aShape = drawLine(x1, y1, x2, y2);
}

graphSettings.draw(aShape);
}
}
}

这些是我的子类

package mainPackage;

import java.awt.geom.Rectangle2D;

public class RectDraw extends myShapes {

public Rectangle2D.Float drawRectangle(int x1, int y1, int x2, int y2) {

int RDx, RDy, RDwidth, RDheight;

RDx = Math.min(x1, x2);
RDy = Math.min(y1, y2);
RDwidth = Math.abs(x1 - x2);
RDheight = Math.abs(y1 - y2);

return new Rectangle2D.Float(RDx, RDy, RDwidth, RDheight);
}
}

除了名称之外,其他完全相同

public class CircleDraw extends myShapes {

public Ellipse2D.Float drawEllipse(int x1, int y1, int x2, int y2){

int x = Math.min(x1, x2);
int y = Math.min(y1, y2);
int width = Math.abs(x1 - x2);
int height = Math.abs(y1 - y2);

return new Ellipse2D.Float(x, y, width, height);
}
}


public class LineDraw extends myShapes {

public Line2D.Float drawLine(int x1, int y1, int x2, int y2) {

return new Line2D.Float(x1, y1, x2, y2);
}
}

我一直收到无法解析为变量

最佳答案

  RectDraw drawRectangle = new RectDraw();
aShape = drawRectangle(x1, y1, x2, y2);

基于第一行的drawRectangle是RectDraw的一个实例;

在第二行中,您将引用名称“drawRectangle”与 RectDraw 类中的同名方法混淆了

您必须使用 RectDraw 类的实例调用该方法,如下所示。为了清楚起见,更改实例名称

  RectDraw rectDraw = new RectDraw();
aShape = rectDraw.drawRectangle(x1, y1, x2, y2);

所有形状都有同样的问题..

此外,您还在循环中创建大量实例,这不是一个好的做法。

您的问题太困惑,请在提问时尽可能清楚地说明:- https://stackoverflow.com/help/how-to-ask :)

关于java - 从子类到父类(super class)获取浮点属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55869911/

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