tau*_*mui 0 java user-interface swing keylistener jtextarea
我创建了一个具有两个JTextAreas的用户界面.我想要一个文本区域来接收用户的直接输入,然后我会基本上喜欢另一个完全镜像它.所以这意味着除了添加完全相同的字符,它还正确地匹配退格并返回按键等.我试图通过使用Robot(int keycode)函数模拟退格并返回按键来实现这一点,给它右键码10为Enter,8为Backspace.如果它是常规字符,那么我只需将它附加到第二个JTextArea.这适用于字符并返回按键,但按Backspace只会将未知字符矩形绘制到镜像文本区域.
理想情况下,我希望能够直接将输入JTextArea中发生的事件传递给输出JTextArea,而不是自己手动计算出适当的行为.
这是程序的一部分,它创建输入JTextArea并分配一个keylistener:
inputBox = new JTextArea();
inputBoxScroller = new JScrollPane();
inputBoxScroller.setViewportView(inputBox);
inputBox.addKeyListener(this);
Run Code Online (Sandbox Code Playgroud)
这是程序的一部分,它接收keylisten事件并根据按下的键的键代码计算出要做的事情,我希望将其改为以某种方式将keylisten事件"转发"到输出JTextArea,因为这样做更理想.
public void keyTyped(KeyEvent keyevent) {
String keyPressed = String.valueOf(keyevent.getKeyChar());
int keyCode = keyevent.getKeyCode();
if(keyCode == 10) {
try {
System.out.println(keyevent.toString());
autoKeypresser = new Robot();
outputBox.requestFocus();
autoKeypresser.keyPress(10);
inputBox.requestFocus();
} catch (AWTException e) {
e.printStackTrace();
}
}
if(keyCode == 8) {
try {
autoKeypresser = new Robot();
outputBox.requestFocus();
autoKeypresser.keyPress(8);
inputBox.requestFocus();
} catch (AWTException e) {
e.printStackTrace();
}
} else {
outputBox.append(keyPressed);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会基本上喜欢另一个完全镜像它
您需要做的就是分享模型:
JTextArea textArea1 = new JTextArea(...);
JTextArea textArea2 = new JTextArea();
textArea2.setDocument( textArea1.getDocument() );
Run Code Online (Sandbox Code Playgroud)
现在,无论您在任何文本区域中键入内容,都将反映在两个文本区域中.
归档时间: |
|
查看次数: |
147 次 |
最近记录: |