كيف يمكنني تغيير حجم خلفية Jlabel أو تطبيق الحدود العلوية والسفلية فقط؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

لدي شيء يشبه هذا:

alt text

كما ترون، "Blambo" هو jlabel مع خلفية حمراء معفية. يجلس الملصق أعلى شريط رمادي صغير يحتوي على حدود مسود بحلقة بكسل من حولها. أود أن تحذيري الأحمر لمطابقة الشريط الذي يجلس بشكل أكثر روعة، أي إما أحتاج إلى جعله بكسلين أقصر وينقله إلى أسفل بكسل أو أحتاج إلى تطبيق نفس الحدود البيكسل واحدة إلى أعلى وأسفل فقط. من بين هذين، فإن الأول هو الأفضل أن يتم تقاسم هذه القطعة من الملصقات الأخرى.

الرمز المعني:

bgColor = Color.red;
textColor = Color.white;
setBackground(bgColor);
setOpaque(true);
// This line merely adds some padding on the left
setBorder(Global.border_left_margin);   
setForeground(textColor);
setFont(font);
super.paint(g);

يتم تعريف تلك الحدود بشكل فعلي:

public static Border border_left_margin = new EmptyBorder(0,6,0,0);
هل كانت مفيدة؟

المحلول

يمكنك إنشاء حد جديد للتسمية مثل هذا:

تحرير: بعد رؤية تعليقك في إجابة أخرى، قمت بإنشاء حد مركب يمنحك ما تريد.

import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;

/**
 * @author Savvas Dalkitsis
 */
public class Test1 {

    public static void main(String[] args) {
        JFrame f = new JFrame("Test");
        JLabel c = new JLabel("Hello");
        Border b = BorderFactory.createCompoundBorder(
                BorderFactory.createMatteBorder(2, 0, 2, 0, Color.black),
                BorderFactory.createEmptyBorder(0, 100, 0, 0));
        c.setBorder(b);
        f.getContentPane().add(c);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

}

نصائح أخرى

دون رؤية الكود الخاص بك، من الصعب معرفة ما تعرفه بالفعل أو حاوله.

قمت بتعيين حدود مكون صريحا مثل:

myLabel.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.BLACK));

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

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