si vous ne l'avez pas essayé la mise en page null, consultez ce code, peut être utile
public static void main(String[] args) {
SwingUtilities.invokeLater(NullLayout::new);
}
NullLayout() {
JFrame frame = new JFrame("Basket Game");
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
for (int i = 0; i < 4; i++) {
JPanel strip = new JPanel();
strip.setMaximumSize(new Dimension(Integer.MAX_VALUE, 50));
strip.setBorder(BorderFactory.createTitledBorder("Strip " + i));
strip.add(new JLabel("Strip " + i));
mainPanel.add(strip);
}
JPanel gamearea = new JPanel();
gamearea.setLayout(null);
mainPanel.add(gamearea);
for (int i = 0; i < 5; i++) {
int x = i * 100, y = i * 100;
JPanel basket = new JPanel();
basket.setSize(200, 50);
basket.setLocation(x, y);
basket.setBackground(Color.YELLOW);
basket.add(new JLabel("x = " + x + ", y = " + y));
gamearea.add(basket);
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(mainPanel);
frame.pack();
frame.setResizable(false);
frame.setSize(600, 600);
frame.setVisible(true);
}
}
double possible de [Définir un emplacement personnalisé pour un composant dans la mise en page de la boîte] (https : //stackoverflow.com/questions/36227097/set-custom-location-for-a-component-in-box-layout) – ParkerHalo
Commencez par [Comment utiliser les gestionnaires de disposition] (https://docs.oracle.com/ javase/tutorial/uiswing/layout/layoutlist.html) - Ne vous laissez pas attraper par l'idée que les mises en page pixel parfaites (ou nulles) sont plus faciles, elles ne sont pas longues - Prenez le temps d'apprendre à utiliser le gestionnaires de mise en page et vous épargner un beaucoup de maux de tête – MadProgrammer