【问题标题】:How do I run this 3D Java Application?如何运行这个 3D Java 应用程序?
【发布时间】:2016-01-17 05:56:30
【问题描述】:

我对这个东西很陌生,很抱歉我的菜鸟问题

所以,我试图在 netbeans https://github.com/rukayam/Cube 上运行这段代码,但它没有主类,所以我创建了一个主类,但问题是,包含面板和绘制方法的类是抽象的( Canvas.java) 并且我无法实例化抽象类...我该怎么办?

(根据我对Java绘画的了解,应该调用/实例化包含Panel/JPanel和paint或paintComponent方法的类/对象)

提前致谢!

【问题讨论】:

  • Lec04 类扩展了Canvas 类,并且是可实例化的。但是没有证据表明该代码曾经有效......祝你好运。

标签: java jpanel panel paint paintcomponent


【解决方案1】:

Stephen C 说的是真的:您可以实例化 Lec04,它具有除 void render() 继承之外的所有属性和所有方法,并在其中实现 void render()

【讨论】:

  • 是的,我尝试在我的主类上实例化 Lec04 并调用“lec04.init();”但它给了我这个错误:code"Exception in thread "main" java.lang.NullPointerException at pkg3dcube3.Canvas.init(Canvas.java:55) at pkg3dcube3.Lec04.init(Lec04.java:18) at pkg3dcube3 .Main.main(Main.java:25) C:\Users\Wartogh\AppData\Local\NetBeans\Cache\8.1\executor-sn-ps\run.xml:53:Java 返回:1 BUILD FAILED(总时间: 1 秒)"code
  • docs.oracle.com/javase/7/docs/api/java/awt/… 代码的第 54 和 55 行说 buf = createImage(700,700); bufG = buf.getGraphics();但 Component 的文档说 createImage 可能返回 null。在您的情况下, createImage 似乎返回了 null,因此 buf.getGraphics() 正在尝试调用 null 对象的方法。
  • 文档说它可能返回 null 因为组件不可显示。尝试将第 54 行和第 55 行放在 Lec04.init() 中,因为 Canvas 是抽象的,可能无法显示。我不确定它是否会起作用,但值得一试。
  • 是的,在我把它放在bufG = buf.getGraphics(); 之后,它仍然在bufG = buf.getGraphics(); 处给出一个空指针异常:/
  • 嗨,你可以试试 buf = new Image().getScaledInstance(700,700,0) 而不是 buf = createImage(700,700) 虽然你应该查看 Image.SCALE_AREA_AVERAGING 等,因为我认为上述方法旨在使用这些字段之一。请注意,我不确定这会做同样的事情,但我想它会做同样的事情,而且它当然值得一玩。如果它不起作用,那么我将无法为您提供帮助,因为我对图形知识了解不多。对不起,祝你好运。
猜你喜欢
  • 2017-02-16
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2020-05-23
  • 2013-05-12
  • 2021-04-16
相关资源
最近更新 更多