Bonjour à tous,
J'aimerai pouvoir afficher un JDialog relativement à un autre composant. Par exemple, lorsqu'un bouton est clique, le dialog doit s'afficher juste en dessous du bouton et si on clique une deuxieme fois, il se cache.
Ceci tout en conservant la meme instance, sans en recreer une nouvelle à chaque clic.
Le problème est que une fois sur deux, la dialog ne s'affiche pas au bon endroit (elle s'affiche dans le coin de l'ecran).
J'ai l'impression qu'il y a un souci avec la methode JDialog.setLocation(), ou une fois sur deux, elle n'est pas prise en compte (peut etre un bug ?)
Merci d'avance de votre aide.
Voici le code :
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 public class TestDlgRelatvie { public static void main(String[] args) { final JDialog dlg = new JDialog(); dlg.add(new JLabel("ABC")); dlg.pack(); final JButton btn = new JButton("Show/Hide Dialog"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (dlg.isVisible()) dlg.setVisible(false); else{ Point p = btn.getLocationOnScreen(); SwingUtilities.convertPointFromScreen(p,dlg); dlg.setLocation(p.x,p.y + btn.getHeight()); dlg.setVisible(true); } } }); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.add(btn); frame.pack(); frame.setVisible(true); } }
Partager