【问题标题】:Inserting text in JTextArea在 JTextArea 中插入文本
【发布时间】:2011-12-01 23:28:04
【问题描述】:

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

【问题讨论】:

    标签: java swing jtextarea


    【解决方案1】:

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

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

    【讨论】:

    • 我的问题是我想在光标放置在 textarea 框中的位置插入文本,以及如何知道它在 textarea 中的确切位置。
    【解决方案2】:
    textArea.replaceSelection(text);
    

    来自 API:

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

    【讨论】:

      【解决方案3】:

      查看: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);
      

      【讨论】:

        猜你喜欢
        • 2013-05-21
        • 1970-01-01
        • 1970-01-01
        • 2014-06-18
        • 2011-09-15
        • 2016-04-22
        • 2013-07-04
        • 2011-08-22
        • 2010-10-01
        相关资源
        最近更新 更多