代码特别长我就说重点
public class ***** extends JFrame implements ActionListener{
private JTextField text_amount;
public ****(){
        text_amount=new JTextField(9); 
        text_amount.settext("..");        这边调用 testText()函数
        setVisiable(true);
}这中间还定义了一个私有内部类 内部类中也有事件处理public void testText(){ //之前也试过 settext 正常使用 输出值
System.out.println(this.text_amount.getText());
System.out.println(this.text_examount.getText());
System.out.println(this.text_exrate.getText());
}
public void actionPerformed(){ 定义一个 总的事件处理 处理构造函数中的所有ActionEvent
·在事件处理中调用set Text( ) 显示空指针异常 在第一句写就空指针

}
text_amout=new JTextField("....");
和 text_amount=new JTextField(9); text_amount.settext("..");
都试过 已经正常初始化,能显示给的值
定义了一个函数 public void testText( ) 发现 getText setText 都能正常使用
print 能正常输出
但是在事件处理public void actionPerformed 中 setText getText 都显示空指针异常;
求大神解答,谢谢
不知道有没有关系, 我调用测试文本行 的函数 testText()是在构造函数中 在文本行初始化后调用的
代码有点长,如果需要 我贴全部

解决方案 »

  1.   

    Exception in thread "main" java.lang.NullPointerException
    at 课程设计.Jiemian.actionPerformed(Jiemian.java:182)
    at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at 课程设计.Jiemian.<init>(Jiemian.java:81)
    at 课程设计.Jiemian.main(Jiemian.java:744)
      

  2.   

    Exception in thread "main" java.lang.NullPointerException
    at 课程设计.Jiemian.actionPerformed(Jiemian.java:182)
    at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at 课程设计.Jiemian.<init>(Jiemian.java:81)
    at 课程设计.Jiemian.main(Jiemian.java:744)
    Jiemian.java:182  这行代码上下的截个图  贴出来
      

  3.   


    Exception in thread "main" java.lang.NullPointerException
    at 课程设计.Jiemian.actionPerformed(Jiemian.java:182)
    at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at 课程设计.Jiemian.<init>(Jiemian.java:81)
    at 课程设计.Jiemian.main(Jiemian.java:744)
    Jiemian.java:182  这行代码上下的截个图  贴出来我在事件处理的第一行 调用 看是否有问题
      

  4.   

    Exception in thread "main" java.lang.NullPointerException
    at 课程设计.Jiemian.actionPerformed(Jiemian.java:182)
    at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at 课程设计.Jiemian.<init>(Jiemian.java:81)
    at 课程设计.Jiemian.main(Jiemian.java:744)
    Jiemian.java:182  这行代码上下的截个图  贴出来我在事件处理的第一行 调用 看是否有问题
    set应该可以set空值   你在调用这个actionPerformed的地方打个断点  再看看调用完这个方法以后执行了哪里的代码 再打个断点
      

  5.   

    public Jiemian(String name,int port) throws IOException{
    super(name);

    JSplitPane split_h=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);//水平分割窗格
    split_h.setDividerLocation(300);  //设置垂直分割条位置
    this.getContentPane().add(split_h);

    JPanel panel1=new JPanel(new GridLayout(7,4));
    split_h.add(panel1);
    split_h.setOneTouchExpandable(true);


    this.combox_currency=new JComboBox<String>(this.currency);//复选框
    this.combox_currency.addActionListener(this);
    panel1.add(this.combox_currency);

    this.combox_currency1=new JComboBox<String>(this.currency1[0]); //复选框
    this.combox_currency1.addActionListener(this);
    this.combox_currency1.setSelectedIndex(0);

    this.text_exrate=new JTextField(8);//文本行
    this.text_exrate.setText("0");
    panel1.add(this.text_exrate);

    this.text_amount=new JTextField(8); //文本行
    this.text_amount.setText("1");
    panel1.add(this.text_amount);

    String str[]={"计算","清除","兑换"};// 几个按钮

    this.text_examount=new JTextField(8);//文本行
    this.text_examount.setText("0");
    panel1.add(this.text_examount,19);

    JSplitPane split_v=new JSplitPane(JSplitPane.VERTICAL_SPLIT); //垂直分割窗格
    split_v.setDividerLocation(500); //设置水平分割条位置
    split_h.add(split_v); this.tpane=new TabPageJPanel(this.myname+","+date); // 自定义选项卡窗格面板
    this.tab.addTab(this.myname+","+date,this.tpane);  
    split_v.add(this.tab);

    JPanel panel2=new JPanel();
    split_v.add(panel2);

    JToolBar toolbar=new JToolBar();  //工具栏  添加了  3个JSpin


    String str2[]={"打开文件","今日日期","传送本日数据"}; //几个按钮
    JButton button2[]=new JButton[str2.length];
    this.setVisible(true);
    } 主类 构造函数 界面 大概的架子
      

  6.   

    文本行可以设置成“”  我断点 debug后 不能进行到下一步   点Step into 后弹出 Thread.class
    我又在 JCOmBox  事件if()中 设置断点  JComBox 构造后就会响应事件   同样 进行不到下一步 弹出  Thread.class 然后nullPoint
    我debug 应该没错吧。
    但是 如果 我在按钮 事件处理中  e.getActionCommand().equals("今日日期")  {} 中 调用setText() 可以正常使用
    不知道为什么
     就好像我在构造函数中调研我自定义的  TestText() 进行 setText 和 getText 都能正常使用一样
      

  7.   

    Exception in thread "main" java.lang.NullPointerException
    at 课程设计.Jiemian.actionPerformed(Jiemian.java:182)
    at javax.swing.JComboBox.fireActionEvent(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at 课程设计.Jiemian.<init>(Jiemian.java:81)
    at 课程设计.Jiemian.main(Jiemian.java:744)
    Jiemian.java:182  这行代码上下的截个图  贴出来我在事件处理的第一行 调用 看是否有问题
    set应该可以set空值   你在调用这个actionPerformed的地方打个断点  再看看调用完这个方法以后执行了哪里的代码 再打个断点
     结果在上面。