当前位置: 首页 > 面试题库 >

我无法在主方法中调用repaint()方法

袁秦迟
2023-03-14
问题内容

每当我尝试调用repaint()方法时,都会说不能从静态方法引用非静态方法。顺便说一句,它与paintComponent方法在同一类中。我尝试首先在类之外创建一个对象,然后使用对象名称引用它,但是它也没有用。请帮忙。

public class P extends JPanel {

P g = new P();
boolean change = true;
static int x = 0;
static int y = 0;
static Color CircleC = new Color(0, 0, 0);
static String position = "";
P p = new P();

public void paintComponent(Graphics g) {
    g.setColor(CircleC);
    g.fillOval(x, y, 50, 50);
    g.setColor(Color.WHITE);
    g.drawString(position, x, y + 25);

}



public static void main(String[] args) throws InterruptedException {
p.repaint();

}

}

问题答案:

主要方法是静态的。您的p对象不是:它是P类的实例字段。试试这个:

public static void main(String[] args) throw InterruptedException {
    EventQueue.invokeLater( new Runnable() {
        public void run() {
            P p = new P();
            p.repaint();
        }
    } );
}

您应该始终从事件分发线程访问Swing组件,这就是为什么我将它们全部放在EventQueue invokeLater中的原因。



 类似资料:
  • 基本上,我有一个接口形状,它具有和方法。绘制形状的每个类都实现了这一点。还有一个类包含这些形状类的。然后有一个单独的类包含我的JFrame。我有一个“动画”按钮,它调用中的所有方法。

  • 对于我的程序,我目前希望使用open按钮打开JFileChooser并选择一个图像,然后在applet左侧的JPanel上绘制它,我知道该文件正在被检索,但当我重新绘制图形上下文时,什么也没有发生。提前谢了。

  • 很难将Game类中的方法调用到绞刑游戏的主方法。我们应该旋转一个轮子以获得100250或500美元的头奖金额,然后按照你的预期玩游戏……但方法是必要的。我还没有完成,我只是想在这一点上调用我的方法,看看它是如何工作的。这是我的代码: 返回错误是 游戏演示。java:11:error:找不到符号System.out。打印(“旋转轮子后,你得到了”spinWheel())^

  • 我遇到了两个不同的问题一个是一般的Graphics2D,另一个是具体的repaint()方法。 首先是repaint()问题。我有一个基于用户选择的时间间隔更新的图表,时间间隔可以从1秒到几分钟不等。问题是一旦调用了repaint()方法,它就会在代码的每一次迭代中不断地回忆自己,而不仅仅是在我想要的时候。有人知道为什么会这样吗?如何阻止它?我试着把我的代码放在一个带有标志的if语句中,但是一旦标

  • 我是新来的Java,刚刚开始学习图形用户界面组件。所以,我正在阅读HeadfirstJava,有一个代码解释了的方法。只要用户点击“改变颜色”按钮,它就可以改变椭圆形的颜色。- MyDrawPanel类- 我从这个例子中得到了所有的东西,除了我们调用方法的部分。 书中提到,只需覆盖的方法,当您调用时,它将调用来呈现内容(因为我们不直接调用)。 现在,我通过扩展创建了类,并覆盖了它的方法。现在,当我

  • 请注意:我已经检查了SO上的其他问题,虽然我可以消除错误,但它还有其他问题。 下面是我现有的代码: 我的适配器类: 修改代码查看各种答案: 现在,我没有得到错误,但是每次都被调用两次,并且recyclerview中的视图每次都在刷新。我做错了什么?请参阅logcat输出: