Oui..est ce que je doit enlever le card layout et utiliser un autre ou bien il y'a un truc quelque part.
Version imprimable
Oui..est ce que je doit enlever le card layout et utiliser un autre ou bien il y'a un truc quelque part.
Ça oui il faut utiliser un autre layout manager. Lequel, ça dépend de comment tu veux les afficher. Si on part sur l'idée d'un affichage en flux vertical (comme un PDF dans Acrobat Reader), on pourrait utiliser un Box vertical (ou un JPanel avec BoxLayout). Attention, il y a un changement majeur dans la mise en place : actuellement tu as un container avec cardlayout qui contient des jscrollpane qui contient des labels. Avec le box, tu auras un conteneur avec un jscrollpane avec un box dedans qui contient des labels.
Exemple :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class Exemple { public static void main(String[] args) { BufferedImage pageImage = new BufferedImage(210,297,BufferedImage.TYPE_INT_RGB); Graphics2D g2d = pageImage.createGraphics(); g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, 210, 297); g2d.dispose(); JFrame frame = new JFrame("Démo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Box mainPanel = new Box(BoxLayout.PAGE_AXIS); for(int i=0; i<5; i++) { JLabel page = new JLabel(); page.setIcon(new ImageIcon(pageImage)); page.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.BLACK), "Page " + (i+1), TitledBorder.CENTER, TitledBorder.BELOW_BOTTOM ) ); page.setAlignmentX(0.5f); JPanel pagePanel = new JPanel(); pagePanel.add(page); pagePanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); mainPanel.add(pagePanel); } frame.add(new JScrollPane(mainPanel)); // ajout avec scrollpane frame.pack(); frame.setSize(frame.getWidth()+32, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
c'est bon, j'ai résolu le problème..
merci beaucoup joel.drigo... ;)