我必须将jtextarea的内容复制到另一个jtextarea。如何才能完成。我已经完成了以下操作:但是这个程序正在将文本形式从一个jtext区域写入另一个角色。我希望它在用户点击回车键时复制它(carage returm.how我会这样做吗?先谢谢。
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());
}
}
答案 0 :(得分:1)
DocumentListener用于检测对文本文档的更改。当你希望每次文本发生变化时都想要发生的事情时,你想要使用它。
你说过每次用户按下回车键时你都希望发生一些事情。因此,正如@camickr正确地指出的那样,你应该考虑改用Key Binding。阅读doc页面,因为这是处理JComponent中热键的最正确方法。
快速而肮脏的方法是使用KeyListener代替,它会在低级别监听按键。请注意,这不是最正确的方法,并且可能会使您的代码难以维护。
如果您确实希望使用KeyListener,请执行以下操作:将MyDocListen类更改为其他实现KeyListener的类,并实现KeyListener.keyTyped()以检查它是否是推送的回车键,如果是的,调用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);
这应该可以解决你的问题。
答案 1 :(得分:0)
或使用此 - >
private void jButtonKeyTyped(java.awt.event.KeyEvent evt) {
char c == evt.getKeyChar();
if(c==KeyEvent.VK_ENTER){
yoursecondtextarea.setText(yourfirsttextarea.getText());
}
}