Swingطريقة معرفة عدد الأسطر و الأحرف الموجودة في JTextArea
المثال التالي يعلمك طريقة الحصول على عدد الأسطر و الأحرف الموجودة في الـ Text Area.
المثال عبارة واجهة مستخدم فيها Text Area و إثنين Labels.
كلما تم إدخال أو حذف حرف في الـ Text Area سيتم إظهار عدد الأسطر في Label و عدد الأحرف في Label آخر.
مثال
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.JScrollPane; public class Main { static JFrame frame = new JFrame("JTextArea demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس static JTextArea textArea = new JTextArea(); // textArea إسمه Text Area هنا أنشأنا static JScrollPane scrollPane = new JScrollPane(textArea); // بداخله textArea و وضعنا الـ Scroll Pane أي قمنا بإنشاء JScrollPane هنا أنشأنا كائن من الكلاس static JLabel chars = new JLabel("Chars: 0"); // و الذي سنستخدمه لعرض عدد الأحرف chars فارغ إسمه Label هنا أنشأنا static JLabel lines = new JLabel("Lines: 0"); // و الذي سنستخدمه لعرض عدد الأسطر lines فارغ إسمه Label هنا أنشأنا public static void main(String[] args) { scrollPane.setBounds(40, 40, 310, 150); // frame في الـ scrollPane هنا قمنا بتحديد حجم و موقع الكائن chars.setBounds(40, 210, 70, 30); // frame في الـ chars هنا قمنا بتحديد حجم و موقع الكائن lines.setBounds(160, 210, 70, 30); // frame في الـ lines هنا قمنا بتحديد حجم و موقع الكائن textArea.setLineWrap(true); // ينزل على سطر جديد في حال كان عدد الأحرف المدخلة أكبر من عدد الأحرف التي يستطيع السطر إستيعابها textArea هنا جعلنا النص الذي ندخله في كائن الـ textArea.setWrapStyleWord(true); // هنا جعلنا الكلمة تظهر على سطر جديد في حال كانت لا تسع في السطر frame.add(scrollPane); // frame في الـ scrollPane هنا أضفنا الكائن frame.add(chars); // frame في الـ chars هنا أضفنا الكائن frame.add(lines); // frame في الـ lines هنا أضفنا الكائن frame.setSize(400, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 300 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج frame.setLayout(null); // لذلك قمنا بتحديد مكان كل شيء قمنا بإضافته في النافذة Layout Manager أي لم نستخدم أي null هنا وضعنا frame.setVisible(true); // هنا جعلنا النافذة مرئية // textArea يتم إستدعاء هذه الدالة بشكل تلقائي كلما تم إدخال أو حذف حرف في كائن الـ textArea.addKeyListener(new KeyListener() { // Override لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها // يتم تنفيذ أي أوامر نضعها هنا مباشرةً عندما يقوم المستخدم بالنقر على أي حرف من لوحة المفاتيح و قبل أن يرفع إصبعه public void keyTyped(KeyEvent ke) { } // Override لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها // يتم تنفيذ أي أوامر نضعها هنا في حال أبقى المستخدم إصبعه على زر معين مما جعل هذا الزر يطبع الحرف أكثر من مرة public void keyPressed(KeyEvent ke) { } // يتم تنفيذ أي أوامر نضعها هنا بعد أن يتم كتابة الحرف الذي قام المستخدم بالنقر عليه من لوحة المفاتيح. أو عندما يرفع إصبعه عن أي زر public void keyReleased(KeyEvent ke) { chars.setText("Chars: " + textArea.getText().length()); // chars كنص للكائن JTextArea هنا وضعنا عدد أحرف الكائن lines.setText("Lines: " + textArea.getLineCount()); // lines كنص للكائن JTextArea هنا وضعنا عدد أسطر الكائن } }); } }
ستظهر لك النافذة التالية عند التشغيل.
عند إدخال أو حذف أي حرف في الـ Text Area سيتم تحديث قيمة العدادات الموضوعة بجانبه بشكل تلقائي.