Java Swing-TextArea.append未启动
正如标题所说。SwingJava Swing-TextArea.append未启动,java,swing,keylistener,keylogger,Java,Swing,Keylistener,Keylogger,正如标题所说。SwingtextArea未启动。我使用getter从mainKeyGUI类获取组件。在下面的代码中是“主类”: (是的,这是一种个人键盘记录器),无论如何,我也做了记录器类。将使用KeyListener检查按下的键: import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class Logger { KeyGUI keyGUIObject = new KeyGUI(); KeyLi
textArea
未启动。我使用getter从mainKeyGUI
类获取组件。在下面的代码中是“主类”:
(是的,这是一种个人键盘记录器),无论如何,我也做了记录器类。将使用KeyListener检查按下的键:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Logger {
KeyGUI keyGUIObject = new KeyGUI();
KeyListener e = new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_ESCAPE:
System.out.println("Esc");
keyGUIObject.getTextArea().append("Esc");
break;
case KeyEvent.VK_F1:
System.out.println("F1");
break;
case KeyEvent.VK_F2:
System.out.println("F2");
break;
case KeyEvent.VK_F3:
System.out.println("F3");
break;
case KeyEvent.VK_F4:
System.out.println("F4");
break;
case KeyEvent.VK_F5:
System.out.print("F5");
break;
case KeyEvent.VK_F6:
System.out.println("F6");
break;
case KeyEvent.VK_F7:
System.out.println("F7");
break;
case KeyEvent.VK_F8:
System.out.println("F8");
break;
case KeyEvent.VK_9:
System.out.println("F9");
break;
case KeyEvent.VK_F10:
System.out.println("F10");
break;
case KeyEvent.VK_F11:
System.out.println("F11");
break;
case KeyEvent.VK_F12:
System.out.println("F12");
break;
case KeyEvent.VK_PRINTSCREEN:
System.out.println("Print Sc");
break;
case KeyEvent.VK_SCROLL_LOCK:
System.out.println("Scr lock");
break;
case KeyEvent.VK_PAUSE:
System.out.println("Pause");
break;
case KeyEvent.VK_INSERT:
System.out.println("Insert");
break;
case KeyEvent.VK_DELETE:
System.out.println("Delete");
break;
case KeyEvent.VK_PAGE_UP:
System.out.println("PgUp");
break;
case KeyEvent.VK_PAGE_DOWN:
System.out.print("PgDown");
break;
case KeyEvent.VK_DEAD_TILDE:
System.out.println("Tilde");
break;
case KeyEvent.VK_1:
System.out.println("1");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
};
public KeyListener getE() {
return e;
}
}
我制作了System.out.println(“Esc”)
,以防它被触发。因为在控制台中,它确实显示Esc。所以我猜我注册了一些错误。你的设计被关闭了
在main()方法中有以下代码:
KeyGUI keyGUIobj = new KeyGUI();
Logger loggerObj = new Logger();
在Logger类中,您有:
KeyGUI keyGUIObject = new KeyGUI();
因此,您正在创建同一类的多个实例
为了简化设计,您的记录器
类应该实现键盘监听器
接口。这样就不需要getter/setter或对KeyGUI类的访问
然后在主类中,当您创建文本区域时,只需使用如下代码:
JTextArea textArea = new JTextArea(5, 10);
textArea.addKeyListener( new Logger() );
我建议您查看Swing教程中的部分,以获得工作示例和一些更好的结构化代码。不要使用KeyListener
,而是在JTextArea
中添加一个。处理文档更新的一般建议很好,但DocumentListener不会处理OP试图处理的键。
JTextArea textArea = new JTextArea(5, 10);
textArea.addKeyListener( new Logger() );