当前位置: 首页 > 面试题库 >

没有任何事件发生

尉迟栋
2023-03-14
问题内容

这是我的代码。我正在尝试使用箭头键使球移动。当我运行上述程序时 ,不显示球如果我将坐标更改为显示0,30球),
并且事件未触发,球既不移动也不跳跃

What is the problem

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class ControlledBall extends JPanel{

int diameter = 30;
int height = 30;
int x_Pos = 0;
int y_Pos;

ControlledBall() {
  JFrame fr = new JFrame("Controlled Ball");
  this.setBackground(Color.black);
  fr.add(this);
  fr.setVisible(true);
  fr.setSize(600,400);
  y_Pos = this.getHeight() - diameter ;
  register();  
  repaint();
}

public void register() {
  this.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent ke) {
       if( ke.getKeyCode() == ke.VK_RIGHT ) {
           increment();
       }
   else  if( ke.getKeyCode() == ke.VK_LEFT ) {
           decrement();
       }
       else if( ke.getKeyCode() == ke.VK_UP) {
           jump();
       }
    }
 });
}

public void paintComponent(Graphics g) {
 super.paintComponent(g);
 g.setColor( Color.blue );
 g.fillOval( x_Pos , y_Pos , diameter , height );
 System.out.println("testing...");
}

public void increment() {
 x_Pos++;
  if( x_Pos > (this.getWidth() - diameter) ) {
    x_Pos = this.getWidth() - diameter;
  }
 repaint();
}

public void decrement() {
 x_Pos--;
  if( x_Pos <= 0) {
    x_Pos = 0;
  }
 repaint();
}

public void jump() {
 y_Pos++;
  if( y_Pos <=0 ) {
   y_Pos = 0;
 }
repaint();
}

  public static void main( String args[] ) {
    new ControlledBall();
  }
}

问题答案:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class ControlledBall extends JPanel{

int diameter = 30;
int height = 30;
int x_Pos = 0;
int y_Pos;

ControlledBall() {
  JFrame fr = new JFrame("Controlled Ball");
  fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setBackground(Color.red);    
  setPreferredSize(new Dimension(400,300));
  fr.add(this);
  fr.setVisible(true);
  // important!
  fr.pack();
  //fr.setSize(600,400);
  y_Pos = this.getHeight()/2;
  register();
  repaint();
}

public void register() {
    // very important!
    setFocusable(true);
  this.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent ke) {
       if( ke.getKeyCode() == ke.VK_RIGHT ) {
           increment();
       }
   else  if( ke.getKeyCode() == ke.VK_LEFT ) {
           decrement();
       }
       else if( ke.getKeyCode() == ke.VK_UP) {
           jump();
       }
    }
 });
}

public void paintComponent(Graphics g) {
 super.paintComponent(g);
 g.setColor( Color.orange );
 g.fillOval( x_Pos , y_Pos , diameter , height );
}

public void increment() {
 x_Pos++;
  if( x_Pos > (this.getWidth() - diameter) ) {
    x_Pos = this.getWidth() - diameter;
  }
 repaint();
}

public void decrement() {
 x_Pos--;
  if( x_Pos <= 0) {
    x_Pos = 0;
  }
 repaint();
}

public void jump() {
 y_Pos++;
  if( y_Pos <=0 ) {
   y_Pos = 0;
 }
repaint();
}

  public static void main( String args[] ) {
    new ControlledBall();
  }
}


 类似资料:
  • 我有一个正在运行的nodejs服务器(通过浏览器,socket.io工作得非常好,可以发射和接收事件)。为了方便地模拟联机连接,im使用ngrok.io来隧道我的本地主机。这一切都很好。我想编写一个连接到同一服务器的小应用程序,但是虽然我的服务器能够累加socket.connect()调用,但它不能累加任何。emit()事件。 (我使用com.github.nkzawa:socket.io-cli

  • 在macOS上运行docker mhart/alpine节点:8 (6.10.3-r0)(18/18)纱线0.24.6笑话20.0.4 但是,在运行代码时,我有一个_tests _/index.test.js文件 我得到以下输出 未找到测试 在 /usr/src/app 5文件检查。 testMatch: /__tests__//*. js?(X),**/?(*.)(spec|test). js?

  • 下面的代码是登录系统。用户名是管理员,密码是密码(您可以稍后更改),它现在做的是在表单发送后,它只是显示登录页面。我找不到它有什么问题。请帮忙。error_log文件没有显示任何内容。可能是密码散列不正确。当我设置密码时 然后插入结果。 编辑:现在我收到以下错误:[2015年11月15日07:00:58欧洲/莫斯科]PHP警告:mysqli_connect():(28000/1045):用户'la

  • 在JavaScript中,我按住两个键,并且被完美触发。当我释放其中一个键时,被触发。到目前为止一切都很好。但是我仍然按住一个键,那么为什么没有被触发呢?我需要在我的游戏中发生这种情况。我做错了什么吗?这是预期的反应吗?有什么解决办法吗?

  • 问题内容: 我有一个非常简单的表格。当用户在输入字段中键入内容时,我想更新他们在页面上其他位置键入的内容。这一切都很好。我已经绑定的更新的,和事件。 唯一的问题是,如果您从浏览器的自动完成框中选择一个输入,则该输入不会更新。从自动完成功能中进行选择时,是否会触发任何事件(显然既不是也不是)。请注意,如果您从“自动完成”框中选择并 模糊 了输入字段,则将触发更新。我希望自动完成会立即触发它。 HTM