كيفية ضبط JTextarea على ارتفاع يتناسب مع حجم النص الذي يحتوي عليه (لتجنب أشرطة التمرير)

StackOverflow https://stackoverflow.com/questions/3081210

سؤال

تبدو هذه المشكلة تافهة ، لكن لا يمكنني العثور على الحل.

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

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

المحلول

ال BorderLayout سوف تتعامل مع شريط التمرير خارج الصندوق إذا وضعت ببساطة الخاص بك JTextAreaفي JScrollPane قبل إضافته إلى JPanel. FlowLayout, ، من ناحية أخرى ، لا. لن يعرض شريط التمرير إلا إذا كان @xorty يتصل setPreferedSize() على الخاص بك JScrollPane واعطها البعد الذي تريده.

نصائح أخرى

يمكنك أيضًا استخدام شيء مثل هذا (العرض المحدود ، والارتفاع اعتمادًا على النص ، ومفيد عند عرض رسائل المعلومات):

  public JTextArea createTextAreaFitToText(String message, Dimension minimalSize){

        JTextArea aMessagePanel = new JTextArea();
        aMessagePanel.setText(message);

        /*for modelToView to work, the text area has to be sized. It doesn't matter if it's visible or not.*/
        aMessagePanel.setPreferredSize(minimalSize);
        aMessagePanel.setSize(minimalSize);            

        Rectangle r = aMessagePanel.modelToView(aMessagePanel.getDocument().getLength()); 

        Dimension d = new Dimension(minimalSize.width, r.y + r.height);
        aMessagePanel.setPreferredSize(d);
        return aMessagePanel;

}

لزيادة أو تقليل ارتفاع JTextarea. عند إدخال نص ، اتصل بـ getPreferredSize () من jtextarea- سوف يمنحك الحجم اللازم لعرض النص بأكمله. بعد ذلك استخدم setPrefferedSize () من JScrollpane لتعيين حجم JTextarea

حسنًا ، أولاً وقبل كل شيء: إنه Jtextarea وليس Jtextarea.

الآن - ضع Jtextarea في JsCrollpane. عند إدخال نص ، اتصل بـ getPreferedSize() من jscrollpane - سوف يمنحك حجمًا دقيقًا اللازم لعرض نص كامل. أيضًا ، لا أستخدم LayoutManager الأخرى أبدًا غير "التصميم المجاني" من NetBeans Swing Builder - لذلك لست متأكدًا من كيفية تصرف مخططات Layoutmanagers هناك.

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