【问题标题】:how to insert or append new line on top of the jtextarea in java swing?java - 如何在java swing中的jtextarea顶部插入或追加新行?
【发布时间】:2012-09-15 22:22:14
【问题描述】:

如何在 java swing 的 jtextarea 顶部插入或追加新行? 我想追加 jtextarea 并在 jtextarea 顶部添加新行 请帮助我如何做到这一点。

【问题讨论】:

    标签: java swing append jtextarea


    【解决方案1】:

    你可以这样做:

    textArea.setText("The new text\n" + textArea.getText());
    

    或者,一个更好的解决方案是这样的:

    try {
      textArea.getDocument().insertString(0, "The new text\n", null);
    } catch (BadLocationException e) {
      e.printStackTrace();
    }
    

    【讨论】:

      【解决方案2】:

      你最好的选择是直接修改JTextArea的底层Document

      这是一个小演示:

      import java.awt.BorderLayout;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.util.Date;
      
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JScrollPane;
      import javax.swing.JTextArea;
      import javax.swing.SwingUtilities;
      import javax.swing.text.BadLocationException;
      
      public class TestTextArea {
      
          private void initUI() {
              JFrame frame = new JFrame("test");
              final JTextArea textarea = new JTextArea(24, 80);
              JButton addText = new JButton("Add line");
              addText.addActionListener(new ActionListener() {
      
                  @Override
                  public void actionPerformed(ActionEvent e) {
                      try {
                          textarea.getDocument().insertString(0, "New line entered on " + new Date() + "\n", null);
                      } catch (BadLocationException e1) {
                          // TODO Auto-generated catch block
                          e1.printStackTrace();
                      }
                  }
              });
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.add(new JScrollPane(textarea));
              frame.add(addText, BorderLayout.SOUTH);
              frame.pack();
              frame.setVisible(true);
          }
      
          public static void main(String[] args) {
              SwingUtilities.invokeLater(new Runnable() {
      
                  @Override
                  public void run() {
                      new TestTextArea().initUI();
                  }
              });
          }
      
      }
      

      【讨论】:

      • 我在输入文本中有 \n。但是当我将它附加到文本区域时,它会将 \n 打印为普通文本。我希望它作为换行符打印。有可能吗?
      【解决方案3】:

      textArea.setText("this is new line" + "\n" + textArea.getText())

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 2014-12-20
        • 1970-01-01
        • 2023-04-08
        • 2011-09-15
        • 2017-07-30
        相关资源
        最近更新 更多