Sto provando a creare una GUI per un'applicazione bancaria in JAVA. Usare il layout assoluto per la mia cornice è così facile da creare qualsiasi cosa se uso Eclipse in WindowBuilder, ma il problema è quando ridimensiono la cornice. Ecco perché ho scelto di usare gridBagLayout dove posso usare weightx/y per semplificare il mio lavoro. Ho dimenticato come usare correttamente questo layout, quindi sono rimasto bloccato al mio primo tentativo di aggiungere un JPanel nel mio pannello principale di gridBayLayout.gridBagLayout vs absoluteLayout
Questo è ciò che voglio raggiungere (fatta nel layout assoluto):
E questo è quello che ho (fatto in GridBagLayout):
Se qualcuno posso indicarmi cosa devo cambiare/aggiungere quando aggiungo per la prima volta il pannello flowLayout che apprezzerei. Fondamentalmente lo spazio bianco della prima cella: voglio liberarmene e controllarlo!
Ecco il codice:
setBackground(new Color(255, 255, 255));
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{0, 0};
gridBagLayout.rowHeights = new int[]{0, 0};
gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE};
setLayout(gridBagLayout);
JPanel panel = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel.getLayout();
flowLayout.setVgap(15);
flowLayout.setHgap(15);
flowLayout.setAlignment(FlowLayout.LEFT);
panel.setBackground(new Color(51, 102, 204));
GridBagConstraints gbc_panel = new GridBagConstraints();
gbc_panel.anchor = GridBagConstraints.NORTH;
gbc_panel.fill = GridBagConstraints.HORIZONTAL;
gbc_panel.gridx = 0;
gbc_panel.gridy = 0;
add(panel, gbc_panel);
JLabel label = new JLabel("European Bank");
label.setForeground(Color.WHITE);
label.setFont(new Font("Tahoma", Font.PLAIN, 25));
panel.add(label);
JLabel lblYourBankAccounts = new JLabel("Your Bank Accounts");
lblYourBankAccounts.setForeground(new Color(153, 153, 153));
lblYourBankAccounts.setFont(new Font("Tahoma", Font.PLAIN, 19));
GridBagConstraints gbc_label = new GridBagConstraints();
gbc_label.insets = new Insets(0, 60, 0, 0);
gbc_label.anchor = GridBagConstraints.LINE_START;
gbc_label.gridx = 0;
gbc_label.gridy = 1;
add(lblYourBankAccounts, gbc_label);
JScrollPane scrollPane = new JScrollPane();
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
gbc_scrollPane.insets = new Insets(10, 60, 10, 10);
gbc_scrollPane.weightx = 1.0;
gbc_scrollPane.weighty = 1.0;
gbc_scrollPane.gridx = 0;
gbc_scrollPane.gridy = 2;
gbc_scrollPane.fill = GridBagConstraints.BOTH;
add(scrollPane, gbc_scrollPane);
Ti consiglio di utilizzare una forma di progettazione visiva, è molto più facile e più veloce di farlo manualmente. eclipse, jformdesigner, netbeans, ci sono molte opzioni. – Robadob
Ho risolto il mio problema. Ho commentato /*gridBagLayout.columnWidths = new int [] {0, 0}; \t \t gridBagLayout.rowHeights = new int [] {0, 0}; \t \t gridBagLayout.columnWeights = new double [] {1.0, Double.MIN_VALUE}; \t \t gridBagLayout.rowWeights = new double [] {1.0, Double.MIN_VALUE}; */ Sto usando l'addon di WindowBuilder in eclissi. Attualmente viene generato il 50% di questo codice. Forse è per questo che non ho capito perché avevo quello spazio bianco. – Chris
@Chris: puoi rendere il tuo codice un po 'più leggibile, facendo una semplice funzione, che aggiunge il componente al contenitore specificato, con 'GridBagLayout' come' Gestore layout' come mostrato in questo [esempio] (http://stackoverflow.com/a/17919032/1057230) –