J'écris une application simple en Java qui fait une simulation de particules sur un tas de moutons (ne demandez pas). Pour cela, je veux une fenêtre avec un JPanel pour les graphiques (qui sera redimensionnable avec une simple liste déroulante qui contient des résolutions standard) et d'autres éléments comme les boutons pour démarrer et mettre en pause la simulation, etc.Mauvais emballage de JFrame en utilisant JPanel dans borderlayout
Ma question: Je suis en utilisant la méthode JFrame.pack pour emballer tout bien ensemble en utilisant un borderLayout. Mais pour une raison quelconque, le JPanel est mal emballé, il semble que l'emballage l'ignore, donc la fenêtre est redimensionnée pour s'adapter à la taille de seulement les deux boutons que j'ai maintenant. Qu'est-ce que je fais mal?
Ce code est jusqu'à présent (peu d'un débutant, donc pas de commentaires sur mon mutisme s'il y a un;)):
public class Window {
public Sheepness sheepness;
public ButtonPanel buttonPanel;
public PaintPanel paintPanel;
public JFrame frame;
public Window(Sheepness sheepness, int width, int height) {
this.sheepness = sheepness;
frame = new JFrame("Sheepness simulation");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setSize(width, height);
BorderLayout frameLayout = new BorderLayout();
JPanel background = new JPanel(frameLayout);
background.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
buttonPanel = new ButtonPanel(this);
background.add(BorderLayout.SOUTH, buttonPanel.buttonBox);
paintPanel = new PaintPanel(this);
paintPanel.setSize(600, 600);
background.add(BorderLayout.CENTER, paintPanel);
frame.getContentPane().add(background);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
}
}
public class PaintPanel extends JPanel {
public Window window;
public PaintPanel(Window window) {
this.window = window;
}
@Override
public void paintComponent(Graphics g) {
g.setColor(Color.blue);
g.fillRect(0, 0, 300, 200);
}
}
public class ButtonPanel {
public Window window;
public Box buttonBox;
public JButton startButton;
public JButton resetButton;
public ButtonPanel(Window window) {
this.window = window;
buttonBox = new Box(BoxLayout.X_AXIS);
startButton = new JButton("Start");
startButton.addActionListener(new startButtonListener());
buttonBox.add(startButton);
resetButton = new JButton("Reset");
resetButton.addActionListener(new resetButtonListener());
buttonBox.add(resetButton);
}
}
J'ai éclairci les étiquettes sur votre question, j'espère que cela ne vous dérange pas. –
Merci, totalement oublié les balises java et swing. – FinalArt2005