次のコードを持つ BouncyFace というクラスが与えられたとします。
import javax.swing.*;
import java.awt.*;
public class BouncyFace extends JComponent {
protected int xDelta = 1;
protected int yDelta = 1;
private Color fleshColor;
public BouncyFace(int x, int y, int side) {
super();
setBounds(x, y, side, side);
fleshColor = new Color(214,157,106);
setBackground(fleshColor);
setForeground(Color.black);
}
public void paint(Graphics g) {
g.setColor( getBackground() );
g.fillOval(0, 0, getWidth()-1, getHeight()-1);
}
public void move() {
if (getParent() != null) {
setLocation( getX()+xDelta, getY()+yDelta );
if ((xDelta > 0) && (getX()+getWidth() > getParent().getWidth()) ) {
xDelta = -Math.abs(xDelta);
} else if ((xDelta < 0) && (getX() < 0)) {
xDelta = Math.abs(xDelta);
}
if ((yDelta > 0) && (getY()+getHeight() > getParent().getHeight()) ) {
yDelta = -Math.abs(yDelta);
} else if ((yDelta < 0) && (getY() < 0)) {
yDelta = Math.abs(yDelta);
}
repaint();
}
そして、BouncyFace が楕円形だけでなく 2 つの小さな楕円形も描画できるように、paint() を変更するクラスを作成するように言われました。
編集:
わかりました、これが私が持っている新しいクラスです-
import javax.swing.*;
import java.awt.*;
public class Features extends BouncyFace
{
public Features(int x,int y, int side)
{
super(x,y,side);
//setBounds(x,y,side,side);
}
public void paint(Graphics g)
{
super.paint(g);
//g.setColor( getBackground() );
g.drawOval(10, 10, getWidth(), getHeight());
}
}
ただし、ドライバーでこれを行うと新しい楕円形しか表示されないため、これは古いペイントを上書きしたと思います
私的な特徴の目;
目 = 新しい機能 (10,10,10);
これは私が設定したパラメーターと関係がありますか? たくさん質問して申し訳ありませんが、ポリモーフィズムで継承を理解しようとしているだけで、ここで完全に立ち往生しており、新しい質問を始める必要はないと思います。
この問題に関するすべての洞察に感謝します。私はそれを解決し、現在別の問題に取り組んでいます。スタックオーバーフロー コミュニティに感謝します。