Java图形 – 游戏的阶段

这是一个最近困扰我的话题。 在JFrame中创建游戏时,如果要使用paintComponent()方法将图形添加到JPanel中,您将如何为游戏提供不同的阶段? 哪种性能最佳? 我能想到的两种方式是: 添加和删​​除包含自己的paintComponent()方法和计时器的面板。 一个不同的面板将用于游戏的每个阶段(等级等)。 将所有内容保存在一个面板或框架中,并具有许多布尔值和if语句。 例如,如果游戏结束时将布尔值更改为true,并且在paintComponent() – 方法中,则使用if语句说明if(gameover)然后为此阶段的游戏绘制图形。 或者还有其他更好的方法吗?

数组初始化给出空指针exception

我最近在学习Java并且正在尝试使用类。但是我无法初始化数组对象 class Tablet { String S = null; void set(String a) { S = a; } } public class questions { public static void main(String args[]) { Tablet[] T = new Tablet[6]; for(int i = 0;i<6;i++) { T[i].set("111"); // I get null pointer exception here } //solution(T,6); } } 任何人都可以告诉我哪里出错了?

我怎样才能找到两个日期之间的天数?

我有两个Date 。 我如何区分这两个日期之间的差异? 我听说过SimpleDateFormat ,但我不知道如何使用它。 我试过这个: String fromdate = “Apr 10 2011”; SimpleDateFormat sdf; sdf = new SimpleDateFormat(“MMM DD YYYY”); sdf.parse(fromdate); Calendar cal = Calendar.getInstance(); cal.setTime(sdf); 我也试过这个: String date1 = “APR 11 2011”; String date2 = “JUN 02 2011”; String format = “MMM DD YYYY”; SimpleDateFormat sdf = new SimpleDateFormat(format); Date dateObj1 = sdf.parse(date1); Date […]

显示Windows 7的ImageIcon png文件的正确路径是什么?

我想测试一个带有简单png图像的程序。 我写了一个简短的程序来做到这一点,但我似乎无法让路径正确。 我已经检查,再次检查,重新检查,并检查了我的路径名称四倍,但没有正确,但无论我做什么,这个图像都不会显示。 我使用了Oracle在ImageIcon文档( creaetImageIcon() )中编写的一个简短类来完成此任务,但它似乎没有帮助。 我将在下面发布整个程序,因为它很短。 package practiceImages; import java.awt.BorderLayout; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class ImageIconGUITest { public static void main(String[] args) { ImageIconGUITest gui = new ImageIconGUITest(); gui.display(); } private ImageIcon createImageIcon(String path, String description) { java.net.URL imgURL = getClass().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL, […]

如何在课堂上支持println?

我自己制作的类需要支持什么才能让println()打印出来? 例如,我有: public class A { … } A类应该使用哪些方法来使这个代码有效? 也许是这样的: public static void main() { A a = new A(); System.out.println(a); } 我猜想必须重载toString()方法。 我对吗? 这够了吗?

JVM / GC是否在程序/线程退出时调用`finalize()`?

PS:我确实知道如何正确清理,而不依赖于finalize() 。 Java不能保证在程序退出时,会进行适当的垃圾收集吗? 例如,假设我已经在缓存中保留了一些数据而不是频繁地序列化,我还实现了finalize() ,希望如果由于任何原因(崩溃除外)我的程序正常退出,那么缓存将被写入DB /我的代码在finalize()方法中的文件/一些存储。 但根据以下小实验,似乎JVM不会“优雅地”清理内存,它只是退出。 Java规范 (参见程序退出)说明了在退出时如何处理内存/ gc。 或者我应该查看规范的不同部分? 在Windows 7上使用1.6.0.27 64位进行以下示例(最后输出) public class Main { // just so GC might feel there is something to free.. private int[] intarr = new int[10000]; public static void main(String[] args) { System.out.println(“entry”); Main m = new Main(); m.foo(); m = new Main(); // System.gc(); m.foo(); […]

如何在Main方法中声明静态变量?

我们可以在Main方法中声明Static变量吗? 因为我收到一条错误消息: Illegal Start of Expression

从字符串编译Java源代码?

有没有办法让正在运行的Java程序编译Java源代码(作为字符串传递)? Class newClass = Compiler.compile (“class ABC { void xyz {etc. etc. } }”); 理想情况下,传入源代码引用的任何类都将由程序的类加载器解析。 这样的事情存在吗?

不再需要Class.forName(JDBC_DRIVER)?

我已经在这里阅读了自从java 6以来你不再需要使用以下命令注册JDBC Driver: Class.forName(JDBC_DRIVER); 因为DriverManager使用位于系统属性“jdbc.drivers”中的路径来检索正确的驱动程序。 但是当我做以下时: System.out.print(System.getProperty(“jdbc.drivers”)); null被打印。 你有什么线索为什么我的应用程序正常工作? ;)

Java中的字符串比较

我正在使用JSP中的Java代码,我正在尝试比较字符串,我遇到了问题。 我宣布了两个字符串 s1 = “din”; s2 = “din”; 但是, if (s1 == s2)永远不会执行。 有人能帮我吗?