Что не так с моей структурой наследования?

Я пытаюсь создать программу, которая отображает наследование и полиморфизм. Предполагается, что программа должна показывать флаг (в частности, флаг Гвинеи).

Это код:

import java.awt.*;
import javax.swing.*;

public class FlagB extends JPanel
{
 public void paint (Graphics g)
 {
 Flag ****** = new Flag(50,290,560);
 ******.drawFlag(g);
 }

 public static void main(String[] args)
 {
 JFrame frame = new JFrame("Bolivian Flag");
 frame.add(new FlagB());
 frame.setSize(1000,725);
 frame.setVisible(true);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

class Flag
{
 private FlagBase fb;
 private FitRect rp; //rp for rectangle parameters
 private LeftTriColor lt;
 private MiddleTriColor mt;
 private RightTriColor rt;
 private int x;
 private int y;
 private int z;


 public Flag(int x,int y,int z)
 {
 this.x = x;
 this.y = y;
 this.z = z;
 fb = new FlagBase();
 rp = new FitRect(x,y,z);
 lt = new LeftTriColor(x,y,z);
 mt = new MiddleTriColor(x,y,z);
 rt = new RightTriColor(x,y,z);
 }

 public void drawFlag(Graphics g)
 {
 fb.FlagBase(g);
 lt.drawRect(g);
 mt.drawRect(g);
 rt.drawRect(g);
 }
}

class FlagBase // The outline of the flag
{
 public void FlagBase(Graphics g)
 {
 g.setColor(Color.BLACK);
 g.drawRect(49,49,876,562);
 }
}

class FitRect
{
 protected int l;
 protected int length;
 protected int width;
 public FitRect(int x,int y,int z)
 {
 x = l;
 y = length;
 z = width;
 }
}

class LeftTriColor extends FitRect
{
 public LeftTriColor(int x,int y,int z)
 {
 super(x,y,z);
 }

 public void drawRect(Graphics g)
 {
 g.setColor(Color.RED);
 g.fillRect(l,l,length,width);
 }
}

class MiddleTriColor extends FitRect
{
 public MiddleTriColor(int x,int y,int z)
 {
 super(x,y,z);
 }

 public void drawRect(Graphics g)
 {
 g.setColor(Color.YELLOW);
 g.fillRect(l+length+1,l,length,width);
 }
}

class RightTriColor extends FitRect
{
 public RightTriColor(int x,int y,int z)
 {
 super(x,y,z);
 }

 public void drawRect(Graphics g)
 {
 g.setColor(Color.GREEN);
 g.fillRect(l+2*length+3,l,length+1,width);
 }
}

Единственное, что появляется в новом окне, - это контур флага. Я думаю, что это имеет какое-то отношение к передаче аргумента FitRect. Это или это что-то еще? Я использую JCreator.

1 ответ

Это должно решить проблему.

class FitRect
{
 protected int l;
 protected int length;
 protected int width;
 public FitRect(int x,int y,int z)
 {
 l = x; //was x = l
 length = y; //was y = length
 width = z; //was z = width
 }
}

licensed under cc by-sa 3.0 with attribution.