质疑一次编译到处运行
看了一些书,知道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;
}
}