Java Swing: JScrollPane ne fonctionne pas
J'ai un Composite qui contient des champs. La hauteur de la Composite est limité, donc je dois mettre un JScrollPane autour d'elle afin que les gens peuvent faire défiler vers le bas.
Comme vous pouvez le voir ci-dessous, il s'affiche parfaitement. Mais vous ne pouvez pas faire défiler vers le bas (ou le haut).
DetailPanel detail = new DetailPanel();
JScrollPane jsp = new JScrollPane(detail);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jsp.setBounds(745, 10, 235, 225);
add(jsp);
Panneau détail:
private void init(){
setLayout(null);
setSize(140, 400);
int x = 5, y = 0;
for(int i = 0; i < lbls.length; i++) {
JLabel lbl = new JLabel(lbls[i]);
lbl.setBounds(x, y, 200, 25);
add(lbl);
fields[i] = new JTextField();
fields[i].setBounds(x, y+26, 200, 25);
add(fields[i]);
y+=50;
}
}
OriginalL'auteur Reinard | 2012-04-04
Vous devez vous connecter pour publier un commentaire.
Votre DetailPanel n'a pas de gestionnaire de présentation associés, ce qui signifie qu'il ne se déplie pas, lorsque vous ajoutez les enfants, ce qui signifie que le JScrollPane n'a pas un lieu pour faire défiler. Soit appeler
setLayout()
sur votre DetailPanel ou remplacergetPreferredSize()
à ajouter les hauteurs, de ses enfants et de retourner une valeur raisonnable.setPreferredSize()
, est ERRONÉ, car orzechowskid dit que vous avez besoin pour remplacer la lecture, c'est à diregetPreferredSize()
, c'est très important.OriginalL'auteur Dan O
Je peux me tromper, mais je pense que cela pourrait être dû au fait que DetailPanel de la mise en page est nulle. Ce qui se passe si vous utilisez un BoxLayout en orientation verticale et appel
detail.setPreferredSize(new Dimension(140,400));
?OriginalL'auteur CodeBlind