webentwicklung-frage-antwort-db.com.de

Wie kann ich die feste Größe von JLABEL einstellen?

Ich versuche, eine Java-Desktopanwendung zu erstellen, in der ich mehrere JLabel verwende. Ich möchte feste Höhe und Breite von JLabel festlegen. Wie kann ich das erreichen? 

Hier ist mein Code

public class Second extends JFrame
{
    JPanel panel1,panel2;
    JLabel label=new JLabel();
    ArrayList<JLabel> lbllist = new ArrayList<>();

    public Second()  
    {
        super("Simple Timer");
        {
            getContentPane().setBackground(new Java.awt.Color(255,255,255));
        } 
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout( new FlowLayout());
        setUndecorated(true);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(0,0,screenSize.width, screenSize.height);

        panel2=new JPanel();
        panel2.setBounds(360, 180, 360, 1020);
        panel2.setBackground(new Java.awt.Color(255,153,51));
        c.add(panel2);
        JPanel panel3 = createPanel();
        panel1.setLayout(new GridBagLayout());
        panel1.add(panel3);

        JPanel panel4 = createPanel(); 
        panel2.setLayout(new GridBagLayout());
    //  jPanel2.setLayout(null);
        panel2.add(panel4);

        setLayout(null);
   }

   private JPanel createPanel() {
        JPanel panel = new JPanel(new GridLayout(0, 1, 10, 5));
        EmptyBorder panelBorder = new EmptyBorder(10, 5, 10, 10);
        panel.setBorder(panelBorder);
        panel.setBackground(new Java.awt.Color(255, 153, 51));
        panel.setOpaque(true);
        EmptyBorder border1 = new EmptyBorder(5, 20, 15, 18);

        Border border = BorderFactory.createLineBorder(Color.BLUE, 2);
        for (int i = 0; i <11; i++) {
            label = new JLabel("<html>Case &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CaseNum<br><font color=yellow>Party1<br>Party2</font></html>");
            label.setFont(new Java.awt.Font("Times New Roman", 1, 18));
            label.setBorder(border);
            label.setSize(300, 100);
            label.setBorder(border1);
            Dimension d = label.getPreferredSize();
            label.setBackground(Color.GRAY);
            label.setForeground(new Java.awt.Color(255, 255,255 ));
            label.setOpaque(true);
            lbllist.add(label);
            panel.add(label);
        }
        return panel;
    }

Wenn ich Textgröße oder Text von JLabel verkleinere, wird die Größe von JLabel reduziert, aber ich möchte, dass, wenn ich Text von JLabel verkleinert oder entfernt, die Größe von Jlabel nicht reduziert wird

Wie kann ich das bekommen?

Danke im Voraus

12
user3506824

Sie können eine feste Größe festlegen, indem Sie die minimale, bevorzugte und maximale Größe festlegen:

setMinimumSize(width, height);
setPreferredSize(width, height);
setMaximumSize(width, height);

Als Link from MadProgrammer müssen Sie diese Methoden außer Kraft setzen, nicht aufgrund von Gründen, die in diesem Link aufgeführt sind.

12
Salah

wenn diese Methode nicht funktioniert

setMinimumSize(width, height);
setPreferedSize(width, height);
setMaximumSize(width, height);

dann verwenden Sie es

setMinimumSize(new Dimension(width, height));
setPreferedSize(new Dimension(width, height));
setMaximumSize(new Dimension(width, height));
3
Avanish Kumar

Eine einfache Umgehung (ohne bestehende Klassen zu überschreiben) ist:

  • Erstellen Sie eine JPanel speziell für die Komponente

  • Legen Sie die Größe für das JPanel fest

  • Platzieren Sie die Komponente im JPanel

  • Platzieren Sie das JPanel an der Stelle, an der Sie die Komponente ursprünglich platziert hätten

z.B.

JPanel mainPanel = new JPanel(); //Assume this is the panel you are placing things into.

JLabel nameLabel = new JLabel("Name:");
JPanel nameLabelPanel = new JPanel();
nameLabelPanel.setPreferredSize(new Dimension(100, 25));
JPanel.add(nameLabel);
mainPanel.add(nameLabelPanel);
2
Wako

Verwenden Sie JLabel.setPreferredSize(width, height); Das Jpanel hat kein Layout, versuchen Sie es mit Jpanel = new JPanel (neues FlowLayout ;

0
PotatoPhil