【问题标题】:Greenfoot and Native Java ClassesGreenfoot 和本机 Java 类
【发布时间】:2012-02-20 04:37:46
【问题描述】:

我正在尝试导入 java.awt.*;进入我在 Greenfoot 的班级,但是当我调用方法 paintComponent() 时,我收到一条错误消息,提示找不到该方法。

Greenfoot 网站声明原生类必须手动导入 (http://www.greenfoot.org/doc/native_loader),并且每个原生类都必须包含在我的场景(项目)中。

该网站提供了指向本机类加载器的链接,但没有提供包含 java.awt 类的库。

如果有人能告诉我在哪里可以下载该库,或者让我知道我是否走在正确的轨道上,因为我对 Java 完全陌生。

谢谢

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.*;
import javax.swing.*;

public class Ground extends Actor
{
   public void act() {
      // Add your action code here.
   }

   public void paintComponent(Graphics z) {
      super.paintComponent(z);

      z.setColor(Color.BLUE);
      z.fillRect(0, 0, 100, 100);
   }
}

【问题讨论】:

  • java.awt 包是 Java 代码包——它不是本地代码(用另一种语言编写的平台相关代码。)因此您根本不需要使用本地加载器!跨度>

标签: java class methods greenfoot


【解决方案1】:

paintComponent() 是 Swing 中的一个方法——即,包 javax.swing 中的类。 java.awt 中的类没有这样的方法。它是在javax.swing.JComponent 中引入的,所以JComponent 的所有子类——即JButtonJPanel 等——都有它。

要绘制 Greenfoot Actor,您需要创建并返回一个 GreenfootImage 对象。 Here is its API. 我认为与上面的正确等价物是这样的

public class Ground extends Actor {
    public GreenfootImage getImage(){
        GreenfootImage image = new GreenfootImage(100, 100);
        image.setColor(Color.BLUE);
        image.fillRect(0, 0, 100, 100);
        return image;
    }
}

我不知道 getImage() 的调用频率;也许 Greenfoot 文档解释了这一点。

【讨论】:

  • 不幸的是我也有 import.javax.swing.*;在我的代码中......我将发布我的整个代码
  • 是的,但是您仍然必须在正确类的实例上调用该方法。您只能在具有该名称的方法的某个类的实例上调用 paintComponent() - 即,在某种类型的 JComponent 实例上。
  • 明白。关于如何将其与 Greenfoot 集成,您有什么建议吗?
  • 好吧,我对 Greenfoot 一无所知,但我刚刚在 Google 上搜索了 Actor 类,我发现您应该返回一个 GreenfootImage 对象来表示该演员。我将在我的答案中添加一些代码,让您了解您应该做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2013-11-03
  • 1970-01-01
  • 2011-12-10
  • 2012-06-19
相关资源
最近更新 更多