JOptionPane.showMessageDialog(null, 
第一个参数是父容器
如果只在一个主程序中提示一个对话框这个参数用null说得通如果
JFrame jf = new JFrame();
JPanel jp = new JPanel();
JButton jb = new JButton();
而上面的JOptionPane是对这个jb的监听器ActionListener方法中作出的处理(弹出一个对话框),此时我的第一个参数用
jf或者jp或者null从效果上看没有区别,具体有什么影响吗?除了对象不一样

解决方案 »

  1.   

    是的,在下面三个组件上调用showMessageDialog看不出来什么区别。
    JFrame jf = new JFrame(); 
    JPanel jp = new JPanel(); 
    JButton jb = new JButton(); 
    原因是:
    如果showMessageDialog的第一个参数是null,Swing会取得默认的Frame,而这个Frame就是应用程序的基础Frame。
    同样在 jf ,jp ,jb上使用, 应该使用的Frame也是应用程序的基础Frame。
    但是如果在JDialog上使用就不一样了,就会以JDialog为父窗口,而不是应用程序的基础Frame。
      

  2.   

    修改一下:
    在下面三个组件上调用showMessageDialog看不出来什么区别。 
    JFrame jf = new JFrame(); 
    JPanel jp = new JPanel(); 
    JButton jb = new JButton(); 
    原因是: 
    如果showMessageDialog的第一个参数是null,Swing会取得默认的Frame,而这个Frame就是应用程序的基础Frame。 
    如果showMessageDialog传入的是组件,Swing就以该组件所在的Frame为基础,在该Frame上弹出MessageDialog。
    在 jf ,jp ,jb上使用, 应该使用的Frame也是应用程序的基础Frame。 
    但是如果在JDialog上使用就不一样了,就会以JDialog为父窗口,而不是应用程序的基础Frame。