gpt4 book ai didi

java - KeyEvent 不适用于 JTextArea,但适用于包含 JTextArea 的 JFrame

转载 作者:行者123 更新时间:2023-11-30 07:26:05 26 4
gpt4 key购买 nike

我搜索了答案,但我找到的只是解决方法,而不是原因,所以我问这个问题:

我是 GUI 编程的新手。在练习一些有关关键事件处理的代码时,我遇到了一个示例,该示例在 JFrame 中包含一个 JTextArea。 keylistener 接口(interface)由 Frame 本身实现。当按下某个键时,一些相关信息会根据所按下的键显示在文本区域中。代码工作正常。

但我尝试采取不同的方式并尝试将 JTextarea 注册到 keyListenr 而不是 JFrame。但是,这不会响应关键事件。这是下面的代码。请帮忙。

public class KeyDemoFrame extends JFrame
{
private String line1 = "";
private String line2 = "";
private String line3 = "";
private JTextArea textArea;

public KeyDemoFrame()
{
super("Demonstrating Keystrong events");
textArea = new JTextArea(10,21);
textArea.setText("Press any key on keyboard");
textArea.setEnabled(false);
textArea.setDisabledTextColor(Color.BLACK);
add(textArea);
//addKeyListener( this );

KeyEventHandler keyStrokeHandler = new KeyEventHandler();
addKeyListener(keyStrokeHandler);
}
private class KeyEventHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
line1 = String.format("Your pressed the %s key", KeyEvent.getKeyText(event.getKeyCode()));
setLines2and3(event);

}
public void keyReleased(KeyEvent event)
{
line1 = String.format("You released %s key", KeyEvent.getKeyText(event.getKeyCode()));
setLines2and3(event);
}
public void keyTyped(KeyEvent event)
{
line1 = String.format("You typed %s key",KeyEvent.getKeyText(event.getKeyCode()));
setLines2and3(event);
}
private void setLines2and3(KeyEvent event)
{
line2 = String.format("This key is %san action key", (event.isActionKey()?"":"not "));
String temp = KeyEvent.getKeyModifiersText( event.getModifiers() );
line3 = String.format( "Modifier keys pressed: %s",( temp.equals( "" ) ? "none" : temp ) );
textArea.setText( String.format( "%s\n%s\n%s\n",line1, line2, line3 ) );
}
}

import javax.swing.JFrame;

public class KeyDemo
{
public static void main(String[] args)
{
KeyDemoFrame keyDemoFrame = new KeyDemoFrame();
keyDemoFrame.setSize(300, 100);
keyDemoFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
keyDemoFrame.setVisible(true);
}
}

最佳答案

关于java - KeyEvent 不适用于 JTextArea,但适用于包含 JTextArea 的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com