Utiliser une disposition absolue à l'intérieur d'un JScrollPane

J'ai besoin d'utiliser un JScrollPane, avec une absolue layoute. Je sais que l'utilisation de setLayout(null) n'est pas recommandable à tous. J'ai lu que si vous souhaitez utiliser la disposition absolue avec un JScrollPane, il est nécessaire de définir la taille par défaut de la propriété des éléments à l'intérieur afin de JScrollPane peut calculer sa taille.

J'ai essayé le code suivant dans la modification de l'ordre et les tailles des elemnts mais je ne peux pas savoir où j'ai eu tort.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class frame extends JFrame {
private JPanel contentPane;
private JScrollPane scrollPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame frame = new frame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public frame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setLayout(null);
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setBackground(Color.red);
panel.setBounds(0,0,600,600);
panel.setPreferredSize(new Dimension(420,280));
scrollPane = new JScrollPane(panel);
scrollPane.setBounds(0, 0, 600, 600);
scrollPane.setLayout(null);
scrollPane.setBackground(Color.green);
scrollPane.add(panel);
scrollPane.setPreferredSize(new Dimension(450,300));
contentPane.add(scrollPane);
}
}

Pourquoi setPreferredSize n'est pas de faire le droit du travail?
Merci à l'avance.

  • Voir aussi ScrollPanePaint.
  • a) jamais utiliser un null Mise en page (aka: pas de LayoutManager) b) ne jamais-jamais utiliser setXXSize
InformationsquelleAutor Jonás | 2012-08-16