当前位置:首页 > 技术问答集
firefox

质疑一次编译到处运行

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

看了一些书,知道awt在不同平台下回出问题,我就尽量使用swing,这次在xp下用虚拟机启动了linux(  
   
  fedora),然后运行,竟然报错  
  报错信息如下:  
  (.:3104):   glib-gobject-warning   **:   invalid   uninstantiatable   type   `<invalid>   in   cast   to    
   
  `gtkwidget  
   
  (.:3104):   gtk-critical   **:   gtk_widget_hide:   assertion   `gtk_is_widget   (widget)   failed  
   
  以下是我的源文件,其实,很简单,就是在一个jdialog容器中放了一个jfilechooser,将其显示出来,  
   
  刚刚看了一些文章,说ibm发现swing漏洞百出,没有办法才自己开发了swt,看来好像真的是这个样子的  
   
  。  
   
  我的代码如下:  
  //file:jd1.java  
  /*  
    *   创建日期   2005-9-23  
    *  
    *   todo   要更改此生成的文件的模板,请转至  
    *   窗口   -   首选项   -   java   -   代码样式   -   代码模板  
    */  
  package   field.ui;  
  import   javax.swing.jdialog;  
  import   javax.swing.jfilechooser;  
  import   javax.swing.jpanel;  
  import   java.awt.borderlayout;  
  import   java.io.file;  
  public   class   jd1   {  
  public   static   void   main(string   []   args){  
  system.out.println("ffffffff");  
  jd1   jd1   =   new   jd1();  
  }  
  //private   startframe1   sf   =   null;  
  private   file   file1   =   null;  
  public   jd1(){  
  this.jdialog   =   this.getjdialog();  
  this.jdialog.setvisible(true);  
  //this.sf   =   sf1;  
  }  
  private   jdialog   jdialog   =   null;     //     @jve:decl-index=0:visual-constraint="45,5"  
  private   jpanel   jcontentpane   =   null;  
  private   jfilechooser   jfilechooser   =   null;  
  private   jfilechooser   getjfilechooser(){  
  if(this.jfilechooser   ==   null){  
  this.jfilechooser   =   new   jfilechooser();  
  jfilechooser.addactionlistener(new   java.awt.event.actionlistener()    
   
  {  
  public   void   actionperformed(java.awt.event.actionevent   e)   {  
  system.out.println("actionperformed()");  
  file1   =   jfilechooser.getselectedfile();  
  jdialog.setvisible(false);  
  }  
  });  
  }  
  return   this.jfilechooser;  
  }  
  /**  
    *   this   method   initializes   jdialog  
    *  
    *   @return   javax.swing.jdialog  
    */  
  private   jdialog   getjdialog()   {  
  if   (jdialog   ==   null)   {  
  jdialog   =   new   jdialog();  
  jdialog.setsize(new   java.awt.dimension(419,285));  
  jdialog.settitle("select   file");  
  jdialog.setcontentpane(getjcontentpane());  
  }  
  return   jdialog;  
  }  
   
  /**  
    *   this   method   initializes   jcontentpane  
    *  
    *   @return   javax.swing.jpanel  
    */  
  private   jpanel   getjcontentpane()   {  
  if   (jcontentpane   ==   null)   {  
  jcontentpane   =   new   jpanel();  
  jcontentpane.setlayout(new   borderlayout());  
  jcontentpane.add(this.getjfilechooser(),borderlayout.center);  
  }  
  return   jcontentpane;  
  }  
   
  }  
   
 

· 网友精彩回答:

发表者:doway

说法是成立的,关键看写代码的是谁。如果是我写,那就是:  
   
  一次“编写”,到处调试。

发表者:wrongagain98

有道理!如果是我写,就是:  
  一次编写,到处失败。

发表者:femalelover

如果是我写,没得到处***,因为我就会在windows下看看电影.其他系统没用过!!

发表者:milkman

java的图形是比较滥的东西,好像没人会用java开发窗口程序吧。  
  所谓swt好像也是用其他语言画图,然后通过java   native   interface调用来实现的。所以看上去eclipse这个用java开发的东西和自己写的swing程序很不一样的原因。

.
© 2006-2008 All Rights Reserved