Java 为什么小程序上显示的文本不';“不改变”;“按下键”;或;keyup“;事件?

Java 为什么小程序上显示的文本不';“不改变”;“按下键”;或;keyup“;事件?,java,applet,keydown,japplet,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(Grap

我想将显示的字符串从“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;
    }
}
  • 不要使用Java 1.1中不推荐使用的方法。而是实现或使用
  • 确保小程序可聚焦并具有输入焦点
  • 例如,使用
    KeyListener

    //
    导入java.awt.event.*;
    导入java.awt.*;
    导入javax.swing.JApplet;
    公共类KeyApplet扩展了JApplet,实现了KeyListener{
    String str=“开始…”;
    公共void init(){
    设置聚焦(真);
    requestFocusInWindow();
    addKeyListener(此);
    挫折地面(颜色:黄色);
    }
    公共空间涂料(图g){
    超级油漆(g);
    g、 setColor(getBackground());
    g、 fillRect(0,0,getWidth(),getHeight());
    g、 设置颜色(颜色为黑色);
    g、 抽绳(str,20,20);
    }
    public void keyTyped(KeyEvent evt){}
    按下公共无效键(KeyEvent evt){
    str=“keyDown”;
    重新油漆();
    }
    公共无效密钥已释放(密钥事件evt){
    str=“keyUp”;
    重新油漆();
    }
    }
    
    我不明白您想说什么?另外,您不想将类命名为“Applet”,因为这已经是核心Java类的名称。为了避免现在让别人困惑,更重要的是你自己,你需要给它一个更独特的名字。另外,我猜您希望您的程序对按键和释放做出响应,但除非您告诉我们,并向我们展示您为实现此行为而编写的代码,否则我们无法确定。如果是这样的话,您是否看过Java Swing教程中关于如何响应关键事件的内容,包括如何编写关键侦听器和使用关键绑定?+1表示建议关键绑定-1用于重写paint()方法的SSCE,因为自定义绘制应通过重写JPanel(或JComponent)的paintComponent()方法完成,然后将面板添加到小程序。@camickr Fair call。我曾考虑将这幅画分解成一个面板,但我想先弄清楚基本原理。
    // <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();
        }
    }