Bonjour à tous,
Je développe une application qui utilise les onglets. J'ai mis en place le fait de pouvoir fermer l'onglet avec la méthode setTabComponentAt(int, Component).
Le component que j'ajoute en argument à cette méthode est un JPanel (contenant 2 JLabel).
Mais l'entête des onglets sur lesquelles j'appelle la méthode setTabComponentAt(int, Component) a une taille bien plus grosse que les en-têtes par défaut des onglets (JTabbedPane).
Voici le code source où j'appelle le setTabComponentAt();
et le code de TabButton (String) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 tab.addTab ("Filtrage", null, panelTotal, "Informations Filtrees"); tab.setTabComponentAt (1, new TabButton ("Filtrage")); tab.setSelectedIndex (1);
Et voici visuellement ce que ça donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class TabButton extends JPanel { JLabel cross; public TabButton (String label) { super (new FlowLayout ()); setBorder (BorderFactory.createLineBorder (Color.red)); setOpaque (false); add (new JLabel (label)); final ImageIcon close = new ImageIcon (LoadingFiles.getCloseButton ()); final ImageIcon closeRollOver = new ImageIcon (LoadingFiles.getCloseButtonRollOver ()); cross = new JLabel (close); cross.setToolTipText ("Fermer onglet"); cross.addMouseListener (new MouseListener() { @Override public void mouseReleased (MouseEvent arg0) {} @Override public void mousePressed (MouseEvent arg0) {} @Override public void mouseExited (MouseEvent arg0) { cross.setIcon (close); } @Override public void mouseEntered (MouseEvent arg0) { cross.setIcon (closeRollOver); } @Override public void mouseClicked (MouseEvent arg0) { tab.remove (tab.getSelectedIndex ()); } }); add (cross); } }
Image montrant un onglet par défaut :
Image montrant un onglet après l'appel à setTabComponentAt() :
Comme on peut le voir, la taille de l'en-tête a augmenter en hauteur. Il y a des espaces entre le bord du panel (symbolisé par la bordure rouge) et les bords de l'en-tête de l'onglet.
Comment peut-on faire pour que ces espaces disparaissent ?
Merci d'avance
Elhina
Partager