2012-07-26 3 views
5

Quando si aggiungono 2+ pulsanti a est, solo 1 mostra. Sto provando a testare un layout che utilizza pannelli a schede. Per qualche motivo, quando provo ad aggiungere più pulsanti alla regione orientale, viene visualizzato solo un pulsante. Succede solo che il pulsante visualizzato sia l'ultimo aggiunto alla regione est, il resto viene ignorato. Penso che forse sono nascosti sotto l'ultimo pulsante.quando si aggiungono 2+ pulsanti a est, solo 1 mostra

public void createPage1() 
    { 
     { 
      panel1 = new JPanel(); 
      panel1.setLayout(new BorderLayout()); 

      panel1.add(new JButton("North"), BorderLayout.EAST); 
      panel1.add(new JButton("South"), BorderLayout.EAST); 
      panel1.add(new JButton("East"), BorderLayout.EAST); 
      panel1.add(new JButton("West"), BorderLayout.EAST); 
      panel1.add(new JButton("Center"), BorderLayout.EAST); 
     } 
    } 
+0

ti rendi conto che stai aggiungendo tutti a EAST giusto? –

+0

Vedere anche [esempio di layout nidificato] (http://stackoverflow.com/questions/5621338/how-to-add-jtable-in-jpanel/5630271#5630271) per un'illustrazione su come è possibile nidificare i layout, che si è necessario utilizzare se si desidera aggiungere più pulsanti in EST – Robin

risposta

11

Non so, come si desidera l'interfaccia utente a guardare come, ma provate in questo modo:

public void createPage1() { 
    //This will be the main panel. 
    //We are going to put several buttons only in the "EAST" part of it. 

    panel1 = new JPanel(); 
    panel1.setLayout(new BorderLayout()); 

    //We create a sub-panel. Notice, that we don't use any layout-manager, 
    //Because we want it to use the default FlowLayout 
    JPanel subPanel = new JPanel(); 

    subPanel.add(new JButton("1")); 
    subPanel.add(new JButton("2")); 
    subPanel.add(new JButton("3")); 

    //Now we simply add it to your main panel. 
    panel1.add(subPanel, BorderLayout.EAST); 
} 
+0

Penso di vedere quello che hai fatto lì! E 'quello che menziona anche Recursed. Grazie! – jerhynsoen

6

BorderLayout consente solo un componente per sezione. Se vuoi mantenere BorderLayout, ma hai 2+ pulsanti, ti suggerisco di mettere prima ognuno di quei pulsanti in uno JPanel e poi di mettere quello JPanel nello slot orientale.

Tuttavia, ci sono probabilmente scelte di layout molto migliori per voi. Hai anche menzionato le schede, che contiene già JTabbedPane per.

Dai uno sguardo al diverso LayoutManagers e cerca di capire quale è giusto per te.

4

1. Il layout di default per JFrame è BorderLayout, e ha Est, Ovest, Nord, Sud, e la zona centro, di cui il Centro è il default se il posizionamento non è menzionato.

2. Ora ogni sezione/zona può contenere solo un widget (componente altalena es.).

3. avrete questo fatto in modo molto migliore utilizzandoGroup Layout, che è stato sviluppato dal team di NetBeans nel 2005, utilizzare di Windows Builder Pro, ora libera da google.

4. Ma se si vuole ancora andare con la BorderLayout, io suggerire di utilizzare JPanel sulla content pane dei JFrame a aggiungere pulsanti nel modo che vuoi ......