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