سؤال

كيفية تنفيذ لوحة تدعم التفاف الأسطر وكسر الأسطر؟أود فقط إضافة تسميات نصية وفواصل أسطر إلى هذه اللوحة.يجب أن تتدفق الملصقات من اليسار إلى اليمين ، والتفاف إلى "السطر" التالي إذا حاجه.قد يؤدي فواصل الأسطر إلى الانتقال إلى السطر التالي.أود أيضًا أن أجعل اللوحة قابلة للتمرير عموديًا.

يجب أن يعمل الحل في Java 5.يمكن استخدام سوينغ اكس.

إيضاح:التسميات النصية هي في الواقع JXHyperlinkق (من سوينغ إكس) ، أي.تحتوي اللوحة على تسميات قابلة للنقر عليها.هذا هو السبب في أنني لا أستطيع استخدام فقطJTextArea.

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

المحلول 3

ولقد وجدت JTextPane، التي كنت قد تجاهلها من قبل لسبب ما. هذه الفئة يفعل ما أحتاج.

وشكرا لمساعدتكم على الرغم من. :)

نصائح أخرى

وUPDATE: فاتني طلب للحصول على دعم الارتباط التشعبي. لا أعرف كيف نفعل ذلك ث / س باستخدام EditorPane.

وJTextArea يفعل بالضبط ما كنت قد وصفها.

JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);

نص بديل http://img187.imageshack.us/img187/3238/wraprn0.png

هذه العينة ليست من لوحة، أي حاوية، ولكن من JLabel، الذي يهدف إلى عرض المحتوى.

يمكنك استخدام HTML في المحتوى الخاص بك واستخدام <br> في كل فاصل. أنت يجب أن تحسب الفواصل برمجيًا وفقًا لقواعدك الخاصة بتغيير حجم المكون.

إليك الكود:

import javax.swing.*;
import java.awt.*;

public class Wrap {


    public static void main( String [] args ) { 

        JFrame frame = new JFrame("Wrap test");

        String text =  "<html>This<br>is<br>a<br>multiline<br>label</html>";


        frame.add( new JLabel( text ) );

        frame.pack();

        frame.setVisible( true );

    }
}

على الرغم من أنه قد لا يكون الحل الذي تبحث عنه، ولكن من المتطلبات التي لديك، يبدو وكأنه مخصص LayoutManager قد تكون قادرًا على تحقيق ما تسعى إليه.من خلال تصميم وتعيين مدير تخطيط مخصص يسمح بفواصل الأسطر لـ Container (مثل Panel)، ينبغي أن يكون من الممكن أن يكون Panel مما يسمح بفواصل الأسطر.

ال وضع المكونات داخل الحاوية مقالة من دروس جافا سيوفر معلومات عامة حول كيفية عمل مديري التخطيط في Java، وعلى وجه الخصوص، إنشاء مدير تخطيط مخصص سيوفر معلومات حول كيفية إنشاء مدير تخطيط مخصص لتطبيقه على Container.

سلوك ال FlowLayout (مدير التخطيط الافتراضي لـ Panel) يبدو قريبًا إلى حد ما من السلوك الذي قد تسعى إليه.تبدو إضافة وظيفة إلى فاصل الأسطر وكأنها القطعة المفقودة.

اقتراح: ربما يكون لدى مدير التخطيط المخصص القدرة على إضافة فاصل أسطر من خلال وجود Component يمثل فاصل أسطر، والذي يمكن إضافته إلى ملف Container باستخدام add() طريقة.

على سبيل المثال، لديك فئة ثابتة Component في مدير التخطيط المخصص مثل (افتراضي) LineBreakLayout.LINE_BREAK, ، وإضافة ذلك إلى Container يمكنه إخبار مدير التخطيط المخصص بالانتقال إلى السطر التالي.ربما يمكن أن يكون التنفيذ مثل:

Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));

ما سبق افتراضية LineBreakLayout سيتم بعد ذلك تقديم الأول Label في سطر واحد والثاني Label في السطر الثاني.

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