在JTextArea中插入文本

Jer*_*lan 2 java swing jtextarea

我正在用Java开发一个简单的应用程序,我想知道是否有任何方法可以在光标所在的位置处的textarea(非空)中插入其他文本(在句子中间的某处)点击一些组件.有人可以指导我如何完成它

jef*_*unt 9

如果这是一个JTextArea组件,您可以使用该.append方法将文本添加到文本区域的末尾,或者.insert将新文本插入特定位置的方法.

如果需要在当前插入位置插入文本,请使用.getCaretPosition方法


cam*_*ckr 6

textArea.replaceSelection(text);
Run Code Online (Sandbox Code Playgroud)

来自API:

使用给定字符串表示的新内容替换当前选定的内容.如果没有选择,则相当于给定文本的插入


Bhe*_*ung 5

退房:JTextComponent.getCaretPosition().

该方法getCaretPosition()是继承的JTextArea,您可以使用它来获取光标位置.然后您可以使用JTextArea.insert(String str, int pos)在该位置插入文本.

样品:

JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
final JTextArea jta = new JTextArea("Hello world\nHello world\nHello world");
JButton btn = new JButton("Add");
btn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        int pos = jta.getCaretPosition(); //get the cursor position
        jta.insert("Some more", pos); //insert your text
    }            
});
frame.add(jta, BorderLayout.CENTER);
frame.add(btn, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)