Java 如何在paintComponent外部调用draw方法

Java 如何在paintComponent外部调用draw方法,java,swing,jpanel,draw,paintcomponent,Java,Swing,Jpanel,Draw,Paintcomponent,我有一个任务,我必须在面板上画一个圆圈,用这个圆圈计算当圆圈改变大小或颜色时用户的反应时间。我得到了paintComponent方法。但是现在我不得不在另一个类中调用圆的方法,我不知道怎么做。有人能帮我吗 这是我编写paintComponent的班级: public class ReactionPanel extends JPanel { boolean setSmallCircle, setInitialCircle; Color color = new Color (255,0,0); /

我有一个任务,我必须在面板上画一个圆圈,用这个圆圈计算当圆圈改变大小或颜色时用户的反应时间。我得到了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
etc)并在我的主类ReactionExperiment中调用它们,如下所示:

void startTest(){
//draw red circle
}
我该怎么做?
谢谢你的帮助

我相信你想要这个

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

这段代码的作用是实例化ReactionPanel(它创建了一个新的实例)。因此,您可以在另一个类中使用它的方法。

我假设您有两个类,并且您希望从一个类调用另一个类中定义的公共函数。由于该方法不是静态方法,因此必须为类实例化一个对象,如-

ReactionPanel obj = new ReactionPanel();
然后使用这个对象,您可以调用第一个类中定义的任何方法,如

obj.paintComponent(g);   // you'll have to define g first though

实际上我已经尝试过了,但是它给了我以下错误:ReactionExperiment.ReactionPanel中的
setSmallCircle(java.awt.Graphics,java.awt.Color)不能应用于(int,int)
并且
x在java.awt.Component中不是公共的;无法从外部软件包访问
emm。。。。(x,x)你的意思是用你想要的任何参数来代替它们。X只是一个例子。你需要传入方法期望的参数好吧,因为我在setSmallCircle方法中定义了x,所以我想我不必再定义它了。但即便如此,它还是给了我我提到的第一个错误,因为你似乎仍然在传递错误的论点。您的方法需要2个int值,但可能您正在声明或传递的不是int值。因此,要么您可以强制转换它(不管它的值是什么),要么您需要更改它,以便该方法接收适当的参数,我已经意识到我的错误。谢谢您的帮助:)但是使用
obj.paintComponent(g)
如何获得像
setSmallCircle
这样的特定方法?如果这是一个愚蠢的问题,我很抱歉,我只是想理解和学习这只是一个例子,你所要做的就是“obj.setSmallCircle(g,c);//首先定义g和c”没有问题是愚蠢的,尽管你必须仔细地在StackOverflow上构建它!哦,哇,我真是太蠢了,我不小心被
reactionPanel.setSmallcircle(g,color)而不是大写C。但非常感谢您的帮助!:)使用受保护的方法作为如何调用方法的示例有点。。。不幸的是:-考虑编辑和使用其他方法。- 1,@ LaynIExx,你不应该直接调用PruttCuffice()。您应该使用
obj.repaint()
通知组件重新绘制自身。