2011-10-22 4 views

Répondre

4

Il existe de nombreuses façons, dont la plupart consistent à créer une mise en page imbriquée (mettre une mise en page dans une autre). Voici un exemple.

Button/Label Layout

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.*; 

class ButtonLabelLayout { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JPanel gui = new JPanel(new BorderLayout()); 
       gui.setBorder(new TitledBorder("Border Layout")); 

       JPanel labels = new JPanel(); 
       labels.setBorder(new TitledBorder("Flow Layout")); 
       labels.add(new JLabel("Label 1")); 
       labels.add(new JLabel("Label 2")); 

       gui.add(labels, BorderLayout.NORTH); 
       gui.add(new JButton("Button"), BorderLayout.SOUTH); 

       JOptionPane.showMessageDialog(null, gui); 
      } 
     }); 
    } 
} 

Pour un exemple plus complet des mises en page de nidification, voir this answer.

+1

le ventilateur de panneaux imbriqués :-) Peut-on faire, mais si l'alignement décompose l'interpalier est nécessaire. De plus, les fragments reliaient conceptuellement la "vue" en bits dictés par les problèmes de mise en œuvre. S'il y a un choix, ne placez pas les vues par sémantique et atteignez les objectifs de mise en page par _one_ decent LayoutManager – kleopatra

+0

@kleopatra J'ai envisagé d'utiliser 'GroupLayout' (pour un SSCCE, ça doit être J2SE;), mais c'était plus LOC. –

+0

à considérer GroupLayout vous devez être plus dur même que le groupe GridBag (Donc, on m'a dit, n'a jamais perdu mon temps avec l'un des principaux core managers annoncés, il y a des options dans la nature qui vous donnent tout ce dont vous avez besoin moins d'efforts) – kleopatra

Questions connexes