سؤال

أريد أن يقوم Jtextarea بتوقيف نفسه (توسيع رأسيًا) عندما يتم الوصول إلى السطر الأخير (الذي يمكن أن يقدمه ارتفاع منطقة النص) ويريد المستخدم بدء خط جديد. أنت تعرف ، مثل مربع النص في Msword.

لدي فكرة لاستخدامها getLineCount() وتحديد (إذا لزم الأمر) الارتفاع الجديد لـ JTextarea. هل لديك ، أو تعرف على أساليب أفضل لتنفيذ هذا؟

هل كانت مفيدة؟

المحلول

في الواقع ، JTextArea دائما الحجم الصحيح بحيث تكون جميع خطوط النص مرئية. ما تواجهه هو على الأرجح أنك لفت منطقة النص في JScrollPane. ما عليك سوى حذف جزء التمرير وجعل منطقة النص طفلًا مباشرًا للحاوية.

حل آخر هو الاستماع إلى تغيير حجم الأحداث في منطقة النص وحجم جزء التمرير وفقًا لذلك. وبهذه الطريقة ، يمكنك أن تنمو إلى حجم معين ثم البدء في عرض أشرطة التمرير (على سبيل المثال ، عندما يصرخ شخص ما 500 كيلو بايت من النص في منطقة النص).

نصائح أخرى

كان لي نفس المشكلة. من اختباراتي ، لا أعتقد أن JTextarea يحدد حجمه ديناميكيًا. بدلاً من ذلك ، يبدو أن حجمه محدود من خلال حاويةها (jpanel في حالتي). ومع ذلك ، فإن JTextarea يغير حجمه المفضل بناءً على النص الذي يحتوي عليه. من الوثائق:

Java.Awt.Textarea لديه صففين صفورين وأعمدة تستخدم لتحديد الحجم المفضل. يستخدم JTextarea هذه الخصائص للإشارة إلى الحجم المفضل لمنفذ العرض عند وضعه داخل JScrollPane لمطابقة الوظائف التي توفرها Java.Awt.Textarea. لدى JTextarea حجم مفضل لما هو مطلوب لعرض جميع النص ، بحيث يعمل بشكل صحيح داخل JScrollPane. إذا كانت قيمة الصفوف أو الأعمدة تساوي صفرًا ، فسيتم استخدام الحجم المفضل على طول هذا المحور للحجم المفضل للمنفذ على طول المحور نفسه.

واجهت نفس المشكلة - وضعت Jtextarea في JScrollpane ووضعت الحجم المفضل لـ JTextarea ، وأعتقد أن هذا هو سبب المشكلة.

لذا فإن الحل الصحيح هو وضع JTextarea في JScrollpane ، ولا تلمس الحجم المفضل لـ JTextarea ، وضبط JScrollpane بدلاً من ذلك.

اذهب إلى Jtextarea "ملكيات" - قائمة تدقيق "LineWrap".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top