EDIT: Comme dans l'exemple (maintenant écrit par moi) ce que j'essaie de réaliser est d'empaqueter JLabel (+ JTextFields, pas dans l'exemple) dans JPanel avec FlowLayout et de trier ces panneaux avec BoxLayout un sous un autre mais en le limitant avec JScrollPane donc je peux spécifier la hauteur de la zone de vue et si ces JPanels (JLabels compressés) dépassent la hauteur que l'utilisateur doit faire défiler mais seulement verticalement.Tenter d'insérer JLabels dans JPanel à l'intérieur de JScrollPane
public class Example2 extends JFrame {
JScrollPane scrollPane = new JScrollPane();
JPanel viewPanel = new JPanel();
public Example2() {
setSize(400,300);
buildGUI();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buildGUI() {
// SCROLLPANE PLACEMENT
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(scrollPane, GroupLayout.PREFERRED_SIZE, 350, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(scrollPane, GroupLayout.PREFERRED_SIZE, 223, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
// REST
scrollPane.setViewportView(viewPanel);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
viewPanel.setLayout(new BoxLayout(viewPanel, BoxLayout.Y_AXIS));
for(int i=0; i<3; i++) {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEADING));
panel.setBackground(new Color(200,i*100,100*i));
for(int j=0;j<20;j++) {
JLabel label = new JLabel("label "+j);
panel.add(label);
}
viewPanel.add(panel);
}
}
public static void main(String[] args) {
new Example2();
}
}
Et votre question/problème est? –
Il est de faire JLabels continuer sur la ligne suivante quand ils n'ont pas d'espace et faire JPanels qui les enveloppent seulement aussi grand que nécessaire pour envelopper JLabels et ne pas l'étendre sur toute la vuePanel – Martin