2010-08-28 15 views
1

Pour une raison quelconque, je ne peux pas ce travail. Cela devrait être simple vraiment.java scrollpane avec flowlayout

J'ai un JFrame avec un BorderLayout, qui contient un JPanel (SUD) et un (CENTRE) JPanel (itemPanel).

itemPanel doit être enveloppé dans un scrollpane. Sa largeur = x, et tous ses enfants partagent sa longueur, donc cela fonctionne comme une table avec seulement 1 colonne.

Pour une raison quelconque, je ne peux pas obtenir le scrollpars pour afficher les barres de défilement (et défiler). Dans le JFrame:

setPreferredSize(dimension); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
getContentPane().add("South",controlPanel); 
JScrollPane scroll = new JScrollPane(itemPanel); 
scroll.setBorder(null); 
getContentPane().add("Center",scroll); 
super.pack(); 
setVisible(true); 

Initilizing et en ajoutant des panneaux-factices au itemPanel:

itemPanel = new ItemPanel(); // A JPanel with a flowlayout 
itemPanel.setPreferredSize(new Dimension(dimension.width,0)); 
for(int i = 0; i < 20; i++){ 
    JPanel p = new JPanel(); 
    p.setPreferredSize(new Dimension(0,50)); 
    p.setBackground(i%2 == 0 ? Color.GREEN : Color.YELLOW); 
    itemPanel.add(p); 
} 

si l'omission itemPanel.setPreferredSize(new Dimension(dimension.width,0)); le scrollpane montre les barres de défilement horizontales, mais étant donné que le FlowLayout ne dispose pas d'une largeur à suivre , il montre juste les composants dans une rangée.

Répondre

7

WrapLayout peut être ce que vous recherchez.

+0

Wow, c'était facile :) Merci! Bien que je ne comprends pas encore le problème, cela l'a résolu. – Peter