【发布时间】:2011-12-01 23:28:04
【问题描述】:
我正在用 Java 开发一个简单的应用程序,我想知道是否有任何方法可以在光标所在位置的非空文本区域内插入额外的文本(在句子中间的某处)放置在某个组件的点击上。有人可以指导我如何完成它
【问题讨论】:
我正在用 Java 开发一个简单的应用程序,我想知道是否有任何方法可以在光标所在位置的非空文本区域内插入额外的文本(在句子中间的某处)放置在某个组件的点击上。有人可以指导我如何完成它
【问题讨论】:
如果这是JTextArea component,您可以使用.append 方法将文本添加到文本区域的末尾,或者使用.insert 方法在特定位置插入新文本。
如果您需要在当前插入符号位置插入文本,请使用.getCaretPosition 方法
【讨论】:
textArea.replaceSelection(text);
来自 API:
用表示的新内容替换当前选择的内容 通过给定的字符串。如果没有选择,这相当于 插入给定的文本
【讨论】:
查看: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);
【讨论】: