JDialog必须指定一个ower   那么如果在JPanel上弹出此框呢?应该怎么写??
百度查询到了这样的一个结果    “那就找JPanel的父亲组件,直到找到一个Frame或Window。JPanel是轻量级的组件,而JDialog是和系统管理的窗口是有对应的重量级的东西的,所以只能说,你有什么非常好的理由一定要让窗口显示在一个JPanel上?就像我们从来不在JPanel里面放一个JFrame一样的道理,因为JFrame也是和JDialog一样性质的组件。你创建的JDialog最终还是会属于一个JFrame对象的,你可以控制JDialog的坐标,使得他看上去像是在JPanel上一样~其实如果你去看JOptionPane的那些方法,虽然他允许你传任何Component作为参数,但是他内部的实现还是向上去找了window对象,然后才用那个Window对象构造JDialog的,所以现在你也需要这么做 ”
不过还是不知道怎么操作    求各位朋友大侠详细说明下   不胜感激......

解决方案 »

  1.   

    简单的弹出框小例子,仔细看看,看完应该会学到不少import java.awt.ImageCapabilities;
    import java.util.Random;import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;/*
     * 产生移动的距离,移动
     * 记录距离的文本修改由线程完成
     * 到达一个数值之后,需要弹出对话框
     * */
    public class Horse extends JLabel implements Runnable{
    private JTextField scores;
    private int index;
    public Horse(){}
    public Horse(JTextField scores,int index){
    this.scores=scores;
    this.index=index;
    }
    public void run(){
    //与对象
    int s=0;
    while(!RunHorse.state){
    int len =(int)(Math.random()*10);
    s+=len;
    this.setLocation(s,this.getY());
    //scro
    if(s>=500){
    RunHorse.state=true;

    JOptionPane.showMessageDialog(null, "Congratulations!","RunHorse",JOptionPane.INFORMATION_MESSAGE,
    new ImageIcon(Horse.class.getResource((index+1)+"jpg")));
    }
    try {
    Thread.currentThread().sleep(50);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
    }
      

  2.   

    JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(jpanel));