GUI的问题

wgdwgd0613 2008-05-29 10:06:16
写了段代码,编译通过,运行出错说空指针,找了2天了都没有找到这个空指针
下面是错误提示
---------- java ----------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at StudentContentPanel.<init>(StudentFrame.java:79)
at StudentFrame.<init>(StudentFrame.java:29)
at MainButtonPanel$MakeStudentFrameAction.actionPerformed(MainFrame.java:148)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)




...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘彬彬 2008-05-29
  • 打赏
  • 举报
回复
学生信息管理系统偶以前做过.
楼主把相关类发我邮箱好吗?
最快速度为你解决问题.
老紫竹 2008-05-29
  • 打赏
  • 举报
回复
at StudentContentPanel. <init>(StudentFrame.java:79)

StudentFrame 的 79行。

我看不出来是哪一行。
oneStudent = operateStudent.queryOneStudent(strStudentId);

也许这个 oneStudent 返回的是 null 吧!
刘彬彬 2008-05-29
  • 打赏
  • 举报
回复
可不可以把相关的类发给偶,不然不怎么好调.
因为你贴的这个类和其他的类有关
如果其它类都在,那就是很简单的调试问题了.
嘿嘿
如果需要的话:
发我邮箱zhuoxiaobin2008@126.com
laorer 2008-05-29
  • 打赏
  • 举报
回复
at StudentFrame. <init>(StudentFrame.java:29)
at MainButtonPanel$MakeStudentFrameAction.actionPerformed(MainFrame.java:148)
在这两行之前打印下相关的变量
wgdwgd0613 2008-05-29
  • 打赏
  • 举报
回复
代码如下

import java.util.Vector;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


/*
* 这是课程信息维护的主界面,包括添加、删除功能。
* 如果点击添加按钮,会弹出一个新的界面,让用户输入相应的信息。
* 如果点击删除,会弹出确认对话框,让用户确认删除的信息。
*/
public class StudentFrame extends JFrame
{

private static final int WIDTH = 400;
private static final int HEIGHT = 300;
private JComboBox studentIdCombox = new JComboBox();
private JFrame parFrame;//父窗口

public StudentFrame (JFrame frame)
{
parFrame = frame;
Container con = getContentPane();

setSize(WIDTH, HEIGHT);
setTitle("学生信息");
setResizable(false);//设置用户不可以改变框架的大小

StudentContentPanel contentPanel = new StudentContentPanel(studentIdCombox);
StudentButtonPanel buttonPanel = new StudentButtonPanel(parFrame, this, studentIdCombox);
con.add(contentPanel, BorderLayout.CENTER);
con.add(buttonPanel, BorderLayout.SOUTH);
}
}

class StudentContentPanel extends JPanel
{
private JComboBox studentIdCombox;
private JTextField studentName = new JTextField();
private JTextField studentSpe = new JTextField();
// private JTextArea studentId = new JTextArea( );

private Student oneStudent;
private String strStudentId;//课程代码
private String strStudentName;//课程名称
private String strStudentSpe;//授课教师
// private String strCourseDes;//课程简述

private OperateStudent operateStudent;

public StudentContentPanel(JComboBox id)
{
studentIdCombox = id;
OperateStudent operateStudent = new OperateStudent();
StudentStorage store = operateStudent.queryAllStudent();
Vector vec = store.getStudentVec();

//初始化时,如果数据库中没有相应的记录,相应的组件设置文本内容为空
if(vec.size() == 0)
{
studentName.setText("");
studentSpe.setText("");
//courseDesArea.setText("");
}
//如果有记录,会根据当前选择的代码号,进行相应组件文本的设置
else
{
for(int i = 0; i < vec.size(); i++)
{
oneStudent = (Student)vec.get(i);
String studentId = oneStudent.getStudentID();
studentIdCombox.addItem(studentId);
}

strStudentId = (String)studentIdCombox.getSelectedItem();

//根据课程代码查询数据库相关的信息
oneStudent = operateStudent.queryOneStudent(strStudentId);
strStudentName = oneStudent.getStudentName();
strStudentSpe = oneStudent.getStudentSpecialty();
//strCourseDes = oneCourse.getCourseDes();
studentName.setText(strStudentName);
studentSpe.setText(strStudentSpe);
//courseDesArea.setText(strCourseDes);
}
//设置所有标签的字体
Font labelFont = new Font("Dialog",Font.BOLD,14);

// 构造第一个水平箱,并添加组件
JLabel studentIdLabel = new JLabel("学 号:");
studentIdLabel.setFont(labelFont);
studentIdCombox.setPreferredSize(new Dimension(60, 30));
Box hbox1 = Box.createHorizontalBox();
hbox1.add(studentIdLabel);
hbox1.add(Box.createHorizontalStrut(20));
hbox1.add(studentIdCombox);

// 构造第二个水平箱,并添加组件
JLabel studentNameLabel = new JLabel("姓 名:");
studentNameLabel.setFont(labelFont);
studentName.setEditable(false);
studentName.setPreferredSize(new Dimension(60, 30));
Box hbox2 = Box.createHorizontalBox();
hbox2.add(studentNameLabel);
hbox2.add(Box.createHorizontalStrut(20));
hbox2.add(studentName);

// 构造第三个水平箱,并添加组件
JLabel studentSpeLabel = new JLabel("专 业:");
studentSpeLabel.setFont(labelFont);
studentSpe.setEditable(false);
studentSpe.setPreferredSize(new Dimension(60, 30));
Box hbox3 = Box.createHorizontalBox();
hbox3.add(studentSpeLabel);
hbox3.add(Box.createHorizontalStrut(20));
hbox3.add(studentSpe);



// 将四个箱体再添加到一个垂直箱中
Box vbox = Box.createVerticalBox();
vbox.add(hbox1);
vbox.add(hbox2);
vbox.add(hbox3);


add(vbox);

//为下拉组合框添加事件监听器
studentIdCombox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
strStudentId = (String)studentIdCombox.getSelectedItem();
oneStudent = new OperateStudent().queryOneStudent(strStudentId);
if(oneStudent != null)
{
strStudentName = oneStudent.getStudentName();
strStudentSpe = oneStudent.getStudentSpecialty();
//strCourseDes = oneCourse.getCourseDes();

studentName.setText(strStudentName);
studentSpe.setText(strStudentSpe);
//courseDesArea.setText(strCourseDes);
}
else
{
studentName.setText("");
studentSpe.setText("");
//courseDesArea.setText("");
}
}
});
}
}

class StudentButtonPanel extends JPanel
{
private JFrame parFrame;
private JFrame subFrame;
private JComboBox studentIdCombox;
// private JScrollPane gongdong=new JScrollPane(courseIdCombox);

public StudentButtonPanel(JFrame par, JFrame sub, JComboBox id)
{
this.parFrame = par;
this.subFrame = sub;
this.studentIdCombox = id;

JButton addButton = new JButton("添加学生");
JButton deleteButton = new JButton("删除学生");
JButton exitButton = new JButton("退 出");

this.add(addButton);
this.add(deleteButton);
this.add(exitButton);

//删除课程记录
deleteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String strStudentId = (String)studentIdCombox.getSelectedItem();
int i = JOptionPane.showConfirmDialog(null,"你确认要删除代码为" + strStudentId + "的学生吗?",
"删除课程",JOptionPane.YES_NO_OPTION);
if(i == 0)
{
int cou = new OperateStudent().deleteStudent(strStudentId);
if(cou == 1)
{
System.out.println("删除成功!");
studentIdCombox.removeItem(strStudentId);
}
}
}
});

//添加课程记录
addButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
AddStudentFrame frame = new AddStudentFrame(subFrame, studentIdCombox);
subFrame.hide();
frame.show();
}
});

//返回父窗口
exitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
subFrame.hide();
parFrame.show();
}
});
}
}



请老紫竹帮我分析一下哪出问题了,谢谢
刘彬彬 2008-05-29
  • 打赏
  • 举报
回复
寻找问题根源,才是解决问题的钥匙!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧