-1

パネルに円を描く必要があり、その円を使用して、円のサイズまたは色が変化したときのユーザーの反応時間を計算する必要があります。paintComponent メソッドがあります。しかし、今は別のクラスで円のメソッドを呼び出す必要があり、その方法がわかりません。誰かがこれで私を助けてくれますか?

paintComponent が記述されているクラスは次のとおりです。

public class ReactionPanel extends JPanel {

boolean setSmallCircle, setInitialCircle;
Color color = new Color (255,0,0); //color  = red
Color c = new Color (255,255,0); //color = yellow
int size;
int x = 250;
int y = x;

public void paintComponent(Graphics g){
  super.paintComponent(g);
  if (setInitialCircle){
    size = 50;
  }
  if (setSmallCircle) {
    size = 50;
  }
  else {
    size = 150;
  }
  g.drawOval(x,y,size,size);
  g.fillOval(x,y,size,size);
}
void setInitialCircle(Graphics g, Color color){
  g.setColor(color);
}
void setSmallCircle(Graphics g, Color c){
  g.setColor(c);
}
void setBigCircle(Graphics g, Color c){
  g.setColor(c);
}
}

今、私はそれら(setInitialCircleなど)を必要とし、メインクラスの ReactionExperiment で次のように呼び出します。

void startTest(){
//draw red circle
}

どうすればいいですか?助けてくれてありがとう!

4

2 に答える 2

1

私はあなたがこれを望んでいると思いますか?

ReactionPanel reactionPanel = new ReactionPanel();
reactionPanel.setSmallCircle(x, x); 

このコードは、ReactionPanel をインスタンス化します (新しいインスタンスを作成します)。そのため、そのメソッドを別のクラスで使用できます。

于 2013-10-14T08:19:28.197 に答える
0

2 つのクラスがあり、一方に定義されたパブリック関数を他方から呼び出したいとします。メソッドは静的メソッドではないため、次のようにクラスのオブジェクトをインスタンス化する必要があります-

ReactionPanel obj = new ReactionPanel();

次に、このオブジェクトを使用して、最初のクラスで定義された任意のメソッドを呼び出すことができます。

obj.paintComponent(g);   // you'll have to define g first though
于 2013-10-14T08:24:07.403 に答える