2009-11-04 4 views
0

J'ai une fenêtre JInternalFrame qui doit faire apparaître une boîte de dialogue modale lorsque vous appuyez sur un bouton JButton. Au début, j'ai essayé d'utiliser JDialog, mais je trouve que le constructeur a besoin JDialog:Java Swing: JInternalFrame: besoin d'une fenêtre de dialogue

  1. JFrame
  2. boolean modal

J'ai essayé de passer à JInternalFrame, mais le type ne correspond pas.

Dois-je utiliser JDialog avec JInternalFrame? Que faire si je ne spécifie pas le propriétaire (c'est-à-dire en passant une valeur nulle)? Y-a-t-il un problème avec cela?

Répondre

1
SwingUtilities.getAncestorOfClass(Window.class, myButton) 

La méthode abvove retournera la fenêtre qui contient votre bouton. Une fois que vous l'avez, vous pouvez le transmettre au constructeur de la boîte de dialogue :)

EDIT1: J'ai mal lu la question que je suppose. Comment pouvez-vous avoir un JinternalFrame comme la fenêtre la plus élevée ??

EDIT2: Aussi, si vous passez null à JDialog constrcutor puis par défaut, il utilise un propriétaire partagé i.e. SwingUtilities.getSharedOwnerFrame()

+0

ok, je vais essayer maintenant. En tant que sidenote, cela signifie également qu'il est tout à fait normal d'utiliser JDialog avec JInternalFrame correct? – sivabudh

+0

Désolé, je ne suis pas clair. J'ai un JFrame comme ma fenêtre la plus haute, qui contient un tas de JInternalFrames. Le bouton appartient cependant à JInternalFrame. – sivabudh

+0

D'accord ... Je viens de l'essayer; Je pense que ça fonctionne bien. (Je n'ai pas encore connecté le bouton de JDialog à une actionPerformed, mais je peux au moins faire apparaître une boîte de dialogue lorsque j'appuie sur le bouton de mon JInternalFrame!) Merci! – sivabudh