2013-07-31 5 views
5

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):

enter image description here

E questo è quello che ho (fatto in GridBagLayout):

enter image description here

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); 
+3

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

+0

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

+2

@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) –

risposta

1

lo consiglio il costruito nel layout Customizer in Netbeans. È facile da imparare da esso. Spero che sia d'aiuto.

Per il tipo di problema, provare a regolare i pesi del componente.

Ecco uno screenshot come farlo: http://goo.gl/TBPY9i