为何要判?不必判。你直接用setVisible(true);不就行了?或者:toFront();

解决方案 »

  1.   

    isVisible只是表示是否已显示在桌面上,不一定表示是在最前面。
      

  2.   

    我写过一个程序,和你说的问题有点像,我在每个窗口上都定义了一个id,然后用了一个List保存所有已经打开的窗口,在需要开启窗口的时候,首先去List中查找是否有,有就直接setVisibl(true),没有再new,我的窗口比较复杂,包含的东西比较多,所以应该尽量的复用,不然每次new开销会比较大,当然如果你的那个窗口比较简单,这方面也可以不太看重吧,我个人一点想法,呵呵。
      

  3.   

    写一个控制字符就OK了,把这个控制字符持久化装入数据库或者是某一个文件中,你窗口打开,就判断一下持久化中的字符是不是true,是true就改成false,并把窗口显示setVisible(false),如果是持久化数据为false则相反操作!
      

  4.   

    恩 我觉得也是这样,我想用一个哈希表将打开的窗体保存起来,但后来发现我要打开的是同一个窗体,只是每次实例化后的Tltle 不同而已,
      

  5.   


    我的是同一个窗体,被打开很多次,只是它们的Title 不同,
      

  6.   

    恩, 是的,@liquoryellow@请问怎么样判断,谢谢
      

  7.   


    呵呵。。貌似用setVisible不就可以实现这样的功能吗?if(!app.isVisible){
       app.setVisible(true);
    }
      

  8.   

    'Dim processes As Process() = Process.GetProcesses   '所有进程
    Dim processes As Process() = Process.GetProcessesByName("进程名称") '获取名称“进程名称”的所有进程,进程名称应该不用带后缀(.exe等)
    Dim tmpProcess As ProcessFor Each tmpProcess In processes
          Debug.Print(tmpProcess.ProcessName)
    next
      

  9.   

    哎!忘记是JAVA的了,以为是.net的,哈哈,以下是JAVA的
    Java代码  public  boolean getProcess(){  boolean flag=false;  try{  Process   p   =   Runtime.getRuntime().exec( "cmd   /c   tasklist ");  ByteArrayOutputStream   baos   =   new   ByteArrayOutputStream();  InputStream   os   =   p.getInputStream();  byte   b[]   =   new   byte[256];  while(os.read(b)> 0)  baos.write(b);  String   s   =   baos.toString();  // System.out.println(s);  if(s.indexOf( "Besttone.exe ")>=0){  System.out.println( "yes ");  flag=true;  }  else{  System.out.println( "no ");  flag=false;  }  }catch(java.io.IOException   ioe){  }  return flag;  }
      

  10.   

    小的愚见:
    判断它是否为null?如果是mull就new出来,否则不new