我的源代码如下:
//如果注释的代码存在,则在contentPane=(JPanel)this.getContentPane();句编译会报无指针错误???
package filetest;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.io.File;import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;public class MainFrame extends JFrame {
private Container gg;
private JPanel contentPane;
private BorderLayout borderLayout1=new BorderLayout();
private JComboBox drivers;//申明的组件
private void jbInit() throws Exception
{
File[] dvs=File.listRoots();//得到所有根目录的File对象
String[] names=new String[dvs.length];
for(int i=0;i<dvs.length;i++)
{
names[i]=dvs[i].getPath();
}
//保存所有根目录的名称的数组,创建一个JComboBox对象drivers
drivers=new JComboBox(names);
//窗口的基本设置,及在窗口上添加drivers组件
contentPane=(JPanel)this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(394,53));
this.setTitle("JDriverDemo");
drivers.setFont(new Font("Dialog",0,14));
drivers.setAutoscrolls(true);
drivers.setDoubleBuffered(true);
contentPane.add(drivers,BorderLayout.CENTER);
}
/* protected void frameInit()
{
System.out.println("start");
}*/
public static void main(String args[])
{
try {
MainFrame myframe=new MainFrame();
myframe.jbInit();
myframe.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//如果注释的代码存在,则在contentPane=(JPanel)this.getContentPane();句编译会报无指针错误???
package filetest;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.io.File;import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;public class MainFrame extends JFrame {
private Container gg;
private JPanel contentPane;
private BorderLayout borderLayout1=new BorderLayout();
private JComboBox drivers;//申明的组件
private void jbInit() throws Exception
{
File[] dvs=File.listRoots();//得到所有根目录的File对象
String[] names=new String[dvs.length];
for(int i=0;i<dvs.length;i++)
{
names[i]=dvs[i].getPath();
}
//保存所有根目录的名称的数组,创建一个JComboBox对象drivers
drivers=new JComboBox(names);
//窗口的基本设置,及在窗口上添加drivers组件
contentPane=(JPanel)this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(394,53));
this.setTitle("JDriverDemo");
drivers.setFont(new Font("Dialog",0,14));
drivers.setAutoscrolls(true);
drivers.setDoubleBuffered(true);
contentPane.add(drivers,BorderLayout.CENTER);
}
/* protected void frameInit()
{
System.out.println("start");
}*/
public static void main(String args[])
{
try {
MainFrame myframe=new MainFrame();
myframe.jbInit();
myframe.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
是JFrame的一个方法,估计里面设置了默认的ContentPane
这里重写了JFrame的代码,导致错误,修改为如下形式就可以运行protected void frameInit()
{
super.frameInit();
System.out.println("start");
}