Dunque avrei risolto un po' di problemi ma non riesco bene a ottenere il risultato che vorrei.
Mi spiego: il numero di pulsanti è variabile. Potrebbero essere 10 come 20 o 30 o 40...Non è un dato che cambierà una volta impostato ma io devo prevedere ogni possibilità, o comunque almeno le più probabili.
Io vorrei che i pulsanti avessero una dimensione fissa, perché non voglio ritrovarmi coi pulsanti giganti se i tavoli sono pochi (ogni pulsante rappresenta un tavolo).
Ma se uso GridLayout i pulsanti si autodimensionano per occupare tutto lo spazio disponibile.
Se tolgo il:
setPreferredSize(new Dimension(500, 700));
al frame principale
ho il problema che se i tavoli sono pochi viene fuori una finestra piccolina, che è bruttina.
Quindi io vorrei:
- che la finestra abbia una dimensione minima scelta da me, ma che si allarghi all'occorrenza se i pulsanti sono tanti
- che i pulsanti abbiano una dimensione minima scelta da me
Si può fare?
Grazie.
codice:
private void initComponents() {
setPreferredSize(new Dimension(500, 700));
jPanelSouth = new JPanel();
jPanelSouth.setPreferredSize(new Dimension(500, 80));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
if (tablesNumber<=9) {
layout = new GridLayout(3, 3);
} else if (tablesNumber >9 && tablesNumber<=18) {
layout = new GridLayout(6, 3);
} else if (tablesNumber >18 && tablesNumber<=27) {
layout = new GridLayout(9, 3);
} else {
layout = new GridLayout(10,3);
}
layout.setHgap(10);
layout.setVgap(10);
jPanel1 = new JPanel(layout);
for (int i = 1; i <= tablesNumber; i++) {
JButton button = new JButton(Integer.toString(i));
button.setPreferredSize(new Dimension(80, 40));
button.setBackground(new Color(255, 255, 153));
button.setActionCommand(Integer.toString(i));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new SingoloTavolo().setVisible(true);
}
});
jPanel1.add(button);
}
bBack = new JButton("Indietro");
bBack.setPreferredSize(new Dimension(80,30));
jPanelSouth.add(bBack, BorderLayout.CENTER);
bBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
getContentPane().add(jPanel1);
getContentPane().add(jPanelSouth, BorderLayout.PAGE_END);
pack();
setLocationRelativeTo(null);
}