Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJTextArea内の行番号を表示するにはどうすればよいですか?


JTextArea JTextComponentのサブクラスです 複数行のテキストです テキストを表示したり、ユーザーがテキストを入力できるようにするコンポーネント。 JTextArea CaretListenerを生成できます カレット更新イベントをリッスンできるインターフェース。デフォルトでは、JTextAreaは行番号を表示しません。 Dを使用してコードをカスタマイズする必要があります ocumentListener インターフェイス。

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.Element;
public class LineNumberTextAreaTest extends JFrame {
   private static JTextArea textArea;
   private static JTextArea lines;
   private JScrollPane jsp;
   public LineNumberTextAreaTest() {
      setTitle("LineNumberTextArea Test");
      jsp = new JScrollPane();
      textArea = new JTextArea();
      lines = new JTextArea("1");
      lines.setBackground(Color.LIGHT_GRAY);
      lines.setEditable(false);
      //  Code to implement line numbers inside the JTextArea
      textArea.getDocument().addDocumentListener(new DocumentListener() {
         public String getText() {
            int caretPosition = textArea.getDocument().getLength();
            Element root = textArea.getDocument().getDefaultRootElement();
            String text = "1" + System.getProperty("line.separator");
               for(int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) {
                  text += i + System.getProperty("line.separator");
               }
            return text;
         }
         @Override
         public void changedUpdate(DocumentEvent de) {
            lines.setText(getText());
         }
         @Override
         public void insertUpdate(DocumentEvent de) {
            lines.setText(getText());
         }
         @Override
         public void removeUpdate(DocumentEvent de) {
            lines.setText(getText());
         }
      });
      jsp.getViewport().add(textArea);
      jsp.setRowHeaderView(lines);
      add(jsp);
      setSize(400, 275);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new LineNumberTextAreaTest();
   }
}

出力

JavaでJTextArea内の行番号を表示するにはどうすればよいですか?


  1. JavaのJTextArea内に行の折り返しと単語の折り返しのテキストを実装するにはどうすればよいですか?

    JTextArea は、テキストを表示したり、ユーザーがテキストを入力したりするための複数行のテキストコンポーネントであり、 CaretListenerを生成します。 JTextAreaの機能を実装しようとしているときのインターフェース 成分。 JTextArea クラスはJTextComponentを継承します Javaのクラス。 以下の例では、 JTextAreaを実装できます。 ユーザーがいるクラスは、ワードラップのいずれかを選択できます または l インラップ ItemListenerを使用するチェックボックス インターフェイス。 例 import javax.swin

  2. JavaでJTextField内の文字数を制限するにはどうすればよいですか?

    JTextFeld は、ユーザーが単一行形式でテキスト値を入力できるようにする最も重要なコンポーネントの1つです。 ユーザーがJTextFieldに入力できる文字数を制限できます PlainDocumentを使用して実現できます クラス。 以下の例では、 PlainDocumentを使用してロジックを実装できます。 クラスであるため、ユーザーは最大10文字を入力できますが、10文字を超える場合は入力できません。 例 import java.awt.*; import javax.swing.*; import javax.swing.text.*; class JTextFieldLi