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 Item 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
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 .
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));
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);
Utilisez JLabel.setPreferredSize(width, height);
Le jpanel n’ayant pas de présentation, essayez Jpanel pane = new JPanel