2012-10-23 11 views
6

Sono una specie di novità nella programmazione Java e sto cercando di creare una finestra che contenga due pulsanti e un'area di testo, come mostrato nell'immagine seguente. Il problema che ho riscontrato è stato il posizionamento dei componenti. Ho provato a utilizzare GridLayout ea separare la finestra in 9 righe e 16 celle, ma ho scoperto che non riuscivo a rendere i componenti più occupati di una cella. So che dovrei usare GridBagLayout ma non so esattamente come. L'aiuto sarebbe apprezzato :)Come posizionare i componenti con GridBagLayout?

+0

tutti i JComponent sono ridimensionabili con container, o no, ei – mKorbel

risposta

7

Hai un numero di scelte. Invece di cercare di layout l'intero componente in uno, provare a utilizzare un layout composto, dove per impostare il layout di sezioni della interfaccia utente in riquadri separati e concentrarsi sulle esigenze individuali di ogni sezione ...

enter image description here

public class TestLayout11 { 

    public static void main(String[] args) { 
     new TestLayout11(); 
    } 

    public TestLayout11() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new ExamplePane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    protected class ExamplePane extends JPanel { 

     public ExamplePane() { 
      setLayout(new GridBagLayout()); 

      JPanel buttonPane = new JPanel(new GridBagLayout()); 

      JButton btnOkay = new JButton("Ok"); 
      JButton btnCancel = new JButton("Cancel"); 

      JTextArea textArea = new JTextArea(5, 20); 

      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.fill = GridBagConstraints.HORIZONTAL; 
      gbc.anchor = GridBagConstraints.CENTER; 
      buttonPane.add(btnOkay, gbc); 
      gbc.gridy++; 
      gbc.insets = new Insets(50, 0, 0, 0); 
      buttonPane.add(btnCancel, gbc); 

      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.insets = new Insets(100, 100, 100, 100); 
      add(buttonPane, gbc); 

      gbc.insets = new Insets(150, 100, 150, 100); 
      gbc.gridx++; 
      gbc.gridy = 0; 
      gbc.fill = GridBagConstraints.BOTH; 
      add(new JScrollPane(textArea), gbc);     
     }    
    }   
}