Je dois concevoir un jeu de swing où un côté est une grille et l'autre côté est un peu un panneau d'affichage où j'ai plusieurs JLabels et un JButton. Mais peu importe si j'utilise setSize(); ou setPrefferedSize(); ou setBounds(); ou même setPrefferedSize (new Dimension()); il ne deviendra pas plus petit mais étend l'intégralité de cette section. Tout JLabel/JButton aligné au centre occupe tout le centre. Comment puis-je réparer ça?Comment changer la taille de mon JButton?
Voici le code à mon référencement de classe à une autre classe dans le projet contenant la grille:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class Scoreboard extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
JLabel scoreLabel;
JLabel coord;
JLabel title;
JButton quit;
public Scoreboard (int score){
setLayout(new BorderLayout());
setSize(490,400);
setPreferredSize(getSize());
setBackground(Color.BLUE);
title = new JLabel();
title.setIcon(new ImageIcon("C:\\Users\\Rachel\\Workspace\\Assignment2\\Planet1.png"));
title.setSize(200,200);
title.setHorizontalAlignment(SwingConstants.CENTER);
add (title,BorderLayout.NORTH);
scoreLabel = new JLabel("Score: "+Integer.toString(score));
scoreLabel.setSize(200,200);
scoreLabel.setBackground(Color.BLUE);
scoreLabel.setHorizontalAlignment(SwingConstants.CENTER);
scoreLabel.setFont(new Font("Source Sans Pro", Font.BOLD, 40));
scoreLabel.setForeground(Color.WHITE);
add(scoreLabel, BorderLayout.CENTER);
coord = new JLabel ("Click the aliens!");
coord.setSize(200,400);
coord.setBackground(Color.RED);
coord.setHorizontalAlignment(SwingConstants.CENTER);
coord.setFont(new Font("Source Sans Pro", Font.BOLD, 20));
coord.setForeground(Color.WHITE);
add(coord,BorderLayout.SOUTH);
JButton quit = new JButton ("Quit Game");
quit.setBounds(20,30,50,30);
quit.setHorizontalAlignment(SwingConstants.CENTER);
add(quit, BorderLayout.CENTER);
}
}
Je pense que vous avez besoin de passer plus de temps des recherches sur la façon dont les gestionnaires de mise en page de travail et ceux qui travaillent avec le 'preferredSize' des composants et ceux qui ne le font pas (ou aiment faire leur propre chose) -' BorderLayout' sera Faites en sorte que le composant remplisse tout l'espace disponible du conteneur. – MadProgrammer
Vous pouvez jeter un coup d'œil à [Guide visuel des gestionnaires de mise en page] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html). [Mise en page des composants dans un conteneur] (http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html) – MadProgrammer
Les gestionnaires de disposition Swing ne sont pas tenus de se soucier de la taille, de la taille liée ou de la taille préférée des composants. La taille généralement préférée est la plus courante utilisée par les gestionnaires de disposition. – tsolakp