web-dev-qa-db-fra.com

Comment définir la taille du correctif de jlabel?

J'essaie de créer une application de bureau Java dans laquelle j'utilise plusieurs JLabel Je souhaite définir une hauteur et une largeur fixes de JLabel. Comment puis-je atteindre cet objectif? 

Voici mon 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;
    }

Lorsque je réduis la taille du texte ou le texte de JLabel, la taille de JLabel est réduite, mais je souhaite que, lorsque je réduis ou supprime du texte de JLabel, mais que la taille de Jlabel ne soit pas réduite, elle devrait être corrigée

Comment puis-je l'obtenir?

Merci d'avance

12
user3506824

Vous pouvez définir une taille fixe en définissant la taille minimale, préférée et maximale:

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

En tant que Link from MadProgrammer, vous devez remplacer ces méthodes et ne pas les utiliser de l’extérieur, en fonction des raisons mentionnées dans ce link .

12
Salah

si cette méthode ne fonctionne pas

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

puis l'utiliser

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

Un moyen facile de contourner le problème (sans remplacer les classes existantes) consiste à:

  • Créer un JPanel spécifiquement pour le composant

  • Définir la taille pour le JPanel

  • Placez le composant dans le JPanel

  • Placez le JPanel où vous auriez initialement placé le composant

par exemple.

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

Utilisez JLabel.setPreferredSize(width, height); Le jpanel n’ayant pas de présentation, essayez Jpanel pane = new JPanel

0
PotatoPhil