コンパイルされたプログラムはエラーなしで実行されますが、キャンバス内をクリックすると形状は生成されません。 compiled program PaintComponentクラスJava GUI - 抽象クラスから描画メソッドを呼び出す
private class CanvasPanel extends JPanel {
//this method draws all shapes
public void paintComponent(Graphics page)
{
super.paintComponent(page);
setBackground(Color.WHITE);
for (int i = 0; i < shapeList.size(); i++) {
((Shape) shapeList.get(i)).draw(page);
}
}
}
ポインタリスナクラス。
public class PointListener implements MouseListener
{
public void mousePressed (MouseEvent event)
{
Point pt = event.getPoint();
//pointList.add(event.getPoint());
if (currentShape.equals("circle")) {
nShape = new Circle((int)pt.getX(), (int)pt.getY(), currentSize, currentSize, currentColor);
shapeList.add(nShape);
} else {
nShape = new Square((int)pt.getX(), (int)pt.getY(), currentSize, currentSize, currentColor);
shapeList.add(nShape);
}
repaint();
}
抽象Shapeクラス
public abstract class Shape {
protected int x;
protected int y;
protected int width;
protected int height;
protected Color color;
public Shape (int x1, int y1, int width, int height, Color color) {
this.x = x1;
this.y = y1;
this.width = width;
this.height = height;
}
public void draw (Graphics page) {
}
}
だから、理想的に、ユーザは自分の選択したオプションでキャンバスをクリックすると、クリックは、リスト内の形状オブジェクトとストアを生成します。ペイントコンポーネントはリスト全体を循環し、四角形/円の子クラスから引き出し、選択した図形を描画するシェイプクラス描画メソッドを呼び出します。残念ながら、何も起こっていません。何か不足していますか? ありがとう!
ここには私のプロジェクトがすべて含まれているレポがあります。 https://github.com/Purpleshoes/assignment7
'下記参照、
WholePanel
クラスにいくつかの変更を加えた'「行方不明何かか?」 - 私たちはコンパイルして実行することができます[MCVE]、コード、およびそれが問題を示しています。コード全体を要求するのではなく、抽出された部分集合、ここに全体を投稿するのに十分な大きさの部分集合、コンパイルして実行する部分を求めていることに注意してください。リンクを見てください。 –たとえば、shapeListはどこに保管されていますか?どのくらいのshapeListsがありますか?すべてはどのようにつながっていますか? –
'PointListener'の情報は' CanvasPanel'とどのように共有されていますか? – MadProgrammer