Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Swingطريقة معرفة عدد الأسطر و الأحرف الموجودة في JTextArea

المثال التالي يعلمك طريقة الحصول على عدد الأسطر و الأحرف الموجودة في الـ Text Area.

المثال عبارة واجهة مستخدم فيها Text Area و إثنين Labels.
كلما تم إدخال أو حذف حرف في الـ Text Area سيتم إظهار عدد الأسطر في Label و عدد الأحرف في Label آخر.


مثال

Main.java
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 لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها
// يتم تنفيذ أي أوامر نضعها هنا مباشرةً عندما يقوم المستخدم بالنقر على أي حرف من لوحة المفاتيح و قبل أن يرفع إصبعه
@Override
public void keyTyped(KeyEvent ke) { }
// Override لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها
// يتم تنفيذ أي أوامر نضعها هنا في حال أبقى المستخدم إصبعه على زر معين مما جعل هذا الزر يطبع الحرف أكثر من مرة
@Override
public void keyPressed(KeyEvent ke) { }
// يتم تنفيذ أي أوامر نضعها هنا بعد أن يتم كتابة الحرف الذي قام المستخدم بالنقر عليه من لوحة المفاتيح. أو عندما يرفع إصبعه عن أي زر
@Override
public void keyReleased(KeyEvent ke) {
chars.setText("Chars: " + textArea.getText().length()); // chars كنص للكائن JTextArea هنا وضعنا عدد أحرف الكائن
lines.setText("Lines: " + textArea.getLineCount()); // lines كنص للكائن JTextArea هنا وضعنا عدد أسطر الكائن
}
});
}
}
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 لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها // يتم تنفيذ أي أوامر نضعها هنا مباشرةً عندما يقوم المستخدم بالنقر على أي حرف من لوحة المفاتيح و قبل أن يرفع إصبعه @Override public void keyTyped(KeyEvent ke) { } // Override لسنا بحاجة هذه الدالة لكننا مجبرين على أن نفعل لها // يتم تنفيذ أي أوامر نضعها هنا في حال أبقى المستخدم إصبعه على زر معين مما جعل هذا الزر يطبع الحرف أكثر من مرة @Override public void keyPressed(KeyEvent ke) { } // يتم تنفيذ أي أوامر نضعها هنا بعد أن يتم كتابة الحرف الذي قام المستخدم بالنقر عليه من لوحة المفاتيح. أو عندما يرفع إصبعه عن أي زر @Override public void keyReleased(KeyEvent ke) { chars.setText("Chars: " + textArea.getText().length()); // chars كنص للكائن JTextArea هنا وضعنا عدد أحرف الكائن lines.setText("Lines: " + textArea.getLineCount()); // lines كنص للكائن JTextArea هنا وضعنا عدد أسطر الكائن } }); } }

ستظهر لك النافذة التالية عند التشغيل.

عند إدخال أو حذف أي حرف في الـ Text Area سيتم تحديث قيمة العدادات الموضوعة بجانبه بشكل تلقائي.

حساب عدد الأحرف و الأسطر المدخلة في ال JTextArea في جافا