Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,repaint()不会';t调用paintcomponent()_Java_Swing_Paintcomponent - Fatal编程技术网

在Java中,repaint()不会';t调用paintcomponent()

在Java中,repaint()不会';t调用paintcomponent(),java,swing,paintcomponent,Java,Swing,Paintcomponent,对于家庭作业,我必须制作一个Java程序,当单击“开始”按钮时,在jframe上画一个红色圆圈。单击按钮时,将调用方法setSmallCircle。这确实有效,但在这个方法中,我正在调用repaint(),但它似乎没有调用paintComponent方法 这是我目前的代码: import java.awt.*; import javax.swing.*; class ReactionPanel extends JPanel { Color color; int size; publi

对于家庭作业,我必须制作一个Java程序,当单击“开始”按钮时,在jframe上画一个红色圆圈。单击按钮时,将调用方法
setSmallCircle
。这确实有效,但在这个方法中,我正在调用
repaint()
,但它似乎没有调用
paintComponent
方法

这是我目前的代码:

import java.awt.*;
import javax.swing.*;
class ReactionPanel extends JPanel {
  Color color;
  int size;
  public void paintComponent(Graphics g){
    System.out.println("paintcomp 1");
    super.paintComponent(g);
    System.out.println("paintcomp 2");
    g.setColor(color);
    g.fillOval(200, 200, size, size);
  }
  public void setSmallCircle(Color c){
    color = c;
    size = 10;
    System.out.println("drawing");
    repaint();
    System.out.println("repaint called");
  }
}

另一个类调用了方法
setSmallCircle(Color.red)
。有人知道为什么“repaint()”没有画一个红色的圆圈吗?

任何对swing组件绘制的更新都应该在里面。但是,在试验以下部分时:

public void paintComponent(Graphics g){
    System.out.println("paintcomp 1");

    super.paintComponent(g);
    g.setColor(color);
    System.out.println(color); // print color as null
    g.fillOval(20, 20, size, size); // printing size as 0

    System.out.println(size);

  }

更新
setSmallCircle()
中的
color
size
无效
paintComponent
似乎一直在使用旧值,而不是更新值

任何对swing组件喷漆的更新都应该在内部。但是,在试验以下部分时:

public void paintComponent(Graphics g){
    System.out.println("paintcomp 1");

    super.paintComponent(g);
    g.setColor(color);
    System.out.println(color); // print color as null
    g.fillOval(20, 20, size, size); // printing size as 0

    System.out.println(size);

  }

更新
setSmallCircle()
中的
color
size
无效
paintComponent
似乎一直在使用旧值,而不是更新值

请添加
setsmallelcircle
to您的jpanel有多大?可能是它小于200x200吗?请显示一个演示问题的SSCCE-原因很可能是您没有显示的代码。请添加相应的调用代码
setsmallelcircle
Too您的jpanel有多大?可能是它小于200x200吗?请显示一个SSCCE来演示问题-原因很可能是您没有显示的代码。在SetMallCircle()中更新颜色和大小无法生效,可以吗:)我自己在这里感到困惑。请给我的思绪蒙上一层阴影。一点提示就行了。也许我错过了一些关于paintComponent的东西,尽管我已经花了3个多月的时间在它上面做高级图形(不能不看SSCCE:-)嗯,我也问过这个问题。:)更新setSmallCircle()中的颜色和大小没有生效,不能,可以吗:\我自己在这里感到困惑。请给我的思绪蒙上一层阴影。一点提示就行了。也许我错过了一些关于paintComponent的东西,尽管我已经花了3个多月的时间在它上面做高级图形(不能不看SSCCE:-)嗯,我也问过这个问题。:)