jlabel على رأس jlabel آخر
سؤال
هل من الممكن إضافة Jlabel فوق جليبيل آخر؟ شكرا.
المحلول
الجواب القصير هو نعم، ك JLabel
هو Container
, ، لذلك يمكن أن تقبل Component
(أ JLabel
هي فرعية من Component
) لإضافة إلى JLabel
باستخدام add
طريقة:
JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);
في الكود أعلاه، insideLabel
يضاف إلى outsideLabel
.
ومع ذلك، بصريا، تظهر التسمية مع النص "Hello"، لذلك لا يمكن للمرء أن يرى العلامة الموجودة داخل الملصقات.
لذلك، يأتي السؤال ما يريده المرء حقا إنجازه عن طريق إضافة ملصق أعلى علامة أخرى.
يحرر:
من التعليقات:
حسنا، ما أردت فعله هو أولا، وقراءة جزء معين من ملف، ثم عرض هذا الكسر في Jlabel. ما فكرت به هو تقسيم الكسر إلى 3 أجزاء، ثم استخدم تسمية لكل من الثلاثة. ثم ثانيا، أريد أن أكون قادرا على سحب الكسر، لذلك اعتقدت أنني أستطيع استخدام Jlabel آخر، ووضع 3'mini Jlabels 'على Jlabel الكبير. لا أعرف ما إذا كان هذا سيعمل على الرغم من ذلك ..: |
يبدو أن أحدهم يجب أن ينظر إلى كيفية استخدام مديري التخطيط في جافا.
مكان جيد للبدء سيكون باستخدام مدراء التخطيط و دليل مرئي للمديرين تخطيط, ، سواء من دروس جافا.
يبدو وكأنه GridLayout
يمكن أن يكون خيار واحد لإنجاز المهمة.
JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));
في المثال أعلاه، JPanel
مصنوع لاستخدام GridLayout
كمدير تخطيط، ويقيل ليصبح صف من JLabel
س.
نصائح أخرى
الجواب على سؤالك الأصلي هو نعم للأسباب المقدمة لإضافة أي مكون إلى حاوية.
السبب في أنك لا ترى الملصق الثاني هو لأنه افتراضي، يستخدم Jlabel مدير تخطيط NULL وحجم التسمية الثانية هو (0، 0) لذلك لا يوجد شيء للطلاء. لذلك كل ما عليك فعله هو تعيين حدود الملصق الثاني وبعيدا تذهب.
لا يمكنك استخدام مدير تخطيط إذا كنت ترغب في سحب المكونات حولها لأنه بمجرد تغيير حجم الإطار، وسيتم استدعاء "إدارة التخطيط" وسيتم إعادة تحديد موضع المكونات بناء على مدير التخطيط للمكون.
إنها مسألة تخطيط. يمكنك القيام بذلك باستخدام تخطيط NULL (مع مواقع مشفرة بجد) أو مع تخطيط مخصص.
يمكنك استخدام JLayeredPane
وتعيين حدودها دون حدود.
يمكنك إضافة وضعها فوق بعضها البعض باستخدام الفجوة الأفقية أو الرأسية (HGAP، VGAP) سمات التخطيط
JPanel p = new JPanel(new GridLayout(2, 1,-40,0));
//the 40 is the hgap , make it the same with the label height .