第1个回答 2010-02-22
那就找JPanel的父亲组件,直到找到一个Frame或Window。
JPanel是轻量级的组件,而JDialog是和系统管理的窗口是有对应的重量级的东西的,所以只能说,你有什么非常好的理由一定要让窗口显示在一个JPanel上?就像我们从来不在JPanel里面放一个JFrame一样的道理,因为JFrame也是和JDialog一样性质的组件。你创建的JDialog最终还是会属于一个JFrame对象的,你可以控制JDialog的坐标,使得他看上去像是在JPanel上一样~
其实如果你去看JOptionPane的那些方法,虽然他允许你传任何Component作为参数,但是他内部的实现还是向上去找了window对象,然后才用那个Window对象构造JDialog的,所以现在你也需要这么做本回答被提问者采纳