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.
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.
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
@kleopatra J'ai envisagé d'utiliser 'GroupLayout' (pour un SSCCE, ça doit être J2SE;), mais c'était plus LOC. –
à 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