gpt4 book ai didi

java - 如何将文本从一个 Jtextarea 复制到另一个 jtextarea?

转载 作者:行者123 更新时间:2023-12-01 14:02:28 26 4
gpt4 key购买 nike

我必须将一个jtextarea的内容复制到另一个jtextarea。怎么办?我已经做了以下操作:但是这个程序正在将一个jtext区域的文本逐个字符写入另一个jtext区域。我希望它在用户按下回车键时复制它(回车键。我该怎么做?提前致谢。

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;

public class JtextareaTest {

static JTextComponent jtextArea1;
static JTextArea jtextArea2;

public static void main(String[] args) {
jtextArea1 = new JTextArea(10, 20);
jtextArea2 = new JTextArea(10, 20);
jtextArea1.setEditable(true);
jtextArea2.setEditable(true);
MyDocListen listener = new MyDocListen();
jtextArea1.getDocument().addDocumentListener(listener);
JFrame frame = new JFrame("JTextArea");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
Container newContentPane = frame.getContentPane();
JPanel jpanel = new JPanel();
jpanel.add(jtextArea1);
jpanel.add(jtextArea2);
newContentPane.add(jpanel, BorderLayout.CENTER);
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}

class MyDocListen implements DocumentListener {

@Override
public void insertUpdate(DocumentEvent e) {
getText();

}

@Override
public void removeUpdate(DocumentEvent e) {
}

@Override
public void changedUpdate(DocumentEvent e) {
}

public void getText() {
StringBuffer sb = new StringBuffer();
String str = JtextareaTest.jtextArea1.getText();
sb.append(str);
JtextareaTest.jtextArea2.setText(sb.toString());
}
}

最佳答案

DocumentListener 用于检测文本文档的更改。当您希望每次文本更改时都发生某些事情时,您需要使用它。

您说过您希望每次用户按下回车键时都会发生一些事情。因此,正如 @camickr 正确指出的那样,您应该考虑使用 Key Binding反而。阅读文档页面,因为这是在 JComponent 中处理热键的最正确方法。

快速而肮脏的方法是使用 KeyListener相反,它会监听低级别的按键操作。请注意,这不是最正确的方法,并且它可能会使您的代码难以维护。

如果您确实希望使用 KeyListener,请执行以下操作:将 MyDocListen 类更改为实现 KeyListener 的其他类,并实现 KeyListener.keyTyped() 以检查按下的是否是 Enter 键,如果是的,调用 getText():

class MyKeyListener implements KeyListener {
public void getText()
{
StringBuffer sb = new StringBuffer();
String str = JtextareaTest.jtextArea1.getText();
sb.append(str);
JtextareaTest.jtextArea2.setText(sb.toString());
}

@Override
public void keyPressed(KeyEvent e) {}

@Override
public void keyReleased(KeyEvent e) {}

@Override
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
getText();
}
}
}

然后只需更改行

MyDocListen listener= new MyDocListen();

MyKeyListener listener = new MyKeyListener();

并确保将 KeyListener 添加到 JTextArea 本身,而不是其文档。为此,请替换此行:

jtextArea1.getDocument().addDocumentListener(listener);

这样:

jtextArea1.addKeyListener(listener);

这应该可以解决您的问题。

关于java - 如何将文本从一个 Jtextarea 复制到另一个 jtextarea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19247953/

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