java - 为什么小程序上显示的文本在 "keydown"或 "keyup"事件时不会更改?

标签 java applet keydown japplet keyup

我想将显示的字符串从“start”更改为“keyup”或“keydown”,但该字符串似乎没有改变..

import java.awt.Event;
import java.awt.Graphics;
import javax.swing.JApplet;

public class Applet extends JApplet {
    String str = "start..";
    public void init() {
    }
    public void paint(Graphics g) {
        g.drawString(str, 200, 200);
    }
    public boolean keyDown(Event evt , int key) {
        str = "keyDown";
        repaint();

        return true;
    }
    public boolean keyUp(Event evt , int key) {
        str = "keyUp";

        return true;
    }
}

最佳答案

  1. 不要使用 Java 1.1 中已弃用的方法。而是实现 KeyListener或使用key bindings .
  2. 确保小程序可聚焦并具有输入焦点。

例如使用KeyListener

KeyApplet

// <applet code='KeyApplet' width=200 height=40></applet>
import java.awt.event.*;
import java.awt.*;
import javax.swing.JApplet;

public class KeyApplet extends JApplet implements KeyListener {

    String str = "start..";

    public void init() {
        setFocusable(true);
        requestFocusInWindow();
        addKeyListener(this);
        setBackground(Color.yellow);
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(getBackground());
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(Color.black);
        g.drawString(str, 20, 20);
    }

    public void keyTyped(KeyEvent evt) {}

    public void keyPressed(KeyEvent evt) {
        str = "keyDown";
        repaint();
    }

    public void keyReleased(KeyEvent evt) {
        str = "keyUp";
        repaint();
    }
}

关于java - 为什么小程序上显示的文本在 "keydown"或 "keyup"事件时不会更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778309/

相关文章:

java - 重绘()无法工作

C# KeyDown事件多个Key加ControlKey

javascript - Opera 中的输入类型文件

java - 逐行读取文本文件并放入对象数组中

java - Jnlp 错误 : Could not find main class

java - 无法在 HTML 中使用小程序

java - 在 Java Applet 中运行游戏

javascript - 确定是否按下了字母或数字 - Javascript

java - Guava Multimaps.filterKeys 与 NavigableMap.subMap() 相比性能较差

Java图像库-将网格图像转为数组