我有一个程序,每次点击空格键时都会发射子弹。程序有两个问题:它不会调用paintComponent()或者监听我的KeyBindings。这是我的代码:
line[X]
答案 0 :(得分:2)
让我们来看看你的主要方法:
public static void main(String[] args) {
// Set the frame up
frame = new JFrame();
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
// Get some more necessary objects
s1 = new Ship();
shoot = new Shoot();
// Threads
Thread ship = new Thread(s1);
ship.start();
}
您创建了一个新的Shoot对象 - 但是哪里你放了它?不在任何显示的JFrame中。要使键绑定起作用并使paintComponent工作,绑定和绘图组件必须是显示的GUI的一部分 - 然后将其添加到GUI中。
例如,考虑:
public static void main(String[] args) {
// Set the frame up
frame = new JFrame();
frame.setSize(400, 300); // ** you really don't want to do this
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
// Get some more necessary objects
s1 = new Ship();
shoot = new Shoot();
frame.add(shoot); // ** added to GUI
frame.setVisible(true); // ** display GUI **after** addition
另外,根据camickr的评论 - 不要忘记在绘图组件的任何时候改变状态,以改变其绘图的方式调用repaint()
。