A JTextArea JTextComponent এর একটি সাবক্লাস এবং এটি একটি মাল্টি-লাইন টেক্সট টেক্সট প্রদর্শন বা ব্যবহারকারী একটি টেক্সট প্রবেশ করার অনুমতি দেয় উপাদান. একটি JTextArea একটি ক্যারেটলিসনার তৈরি করতে পারে ইন্টারফেস, যা ক্যারেট আপডেট ইভেন্ট শুনতে পারে। ডিফল্টরূপে, JTextArea লাইন নম্বরগুলি প্রদর্শন করে না, আমাদের একটি D ব্যবহার করে কোডটি কাস্টমাইজ করতে হবে অকুমেন্ট লিসেনার ইন্টারফেস।
উদাহরণ
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(); } }
আউটপুট