【发布时间】:2014-01-24 06:21:02
【问题描述】:
所以,我一直在学习 Java,但我还是个新手,所以请耐心等待。我最近的目标是图形程序,这是一个键盘控制测试。由于某种原因,该程序不会显示矩形。通常paint() 会自行运行,但由于某种原因它不是。我查看了我制作的其他程序以及网络上的其他程序,但我仍然无法弄清楚。
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class App extends JFrame{
public static int keyVal = 0;
public static void main(String[] args) {
new App();
while(true){
System.out.println(keyVal);
Wait.ms(50);
}
}
public App(){
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Pong");
f.setSize(300,400);
f.setLocationRelativeTo(null);
f.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e){
keyVal = e.getKeyCode();
}
public void keyReleased(KeyEvent e){
keyVal = 0;
}
public void keyTyped(KeyEvent e){}
});
f.setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.orange);
while(true){
g.drawRect(20, 20, 100, 60);
}
}
}
【问题讨论】:
-
第 1 步 - 永远不要在你的
paint函数中添加while(true)- 它永远不会完成,你的 UI 会被锁定。 -
感谢您的提示!虽然遗憾的是它仍然不起作用。 ://
-
抱歉,没有时间进一步研究这个问题 - 我浏览了一下,发现了一个明显的问题,并认为我至少可以提供一点帮助,即使我没有解决问题。
-
This tutorial 将引导您创建一个示例 Swing 应用程序 - 您应该能够吸取经验教训并将其应用到您的应用程序中。我注意到的其他一些差异 - 覆盖
paintComponent而不是paint,并且不要在main函数中使用Wait。如果其他人想在代码示例之后设计您的应用并将其发布为答案,请成为我的客人...