想先在jpanel上输出数据库第一条的内容,再添加jbutton并给jbutton设置监听器,通过点击jbutton显示数据库下一条内容,
输出第一条内容正常,数据库中下一条数据不为空,但点击jbutton就会报错
代码如下
public Mark(String s){
this.setVisible(true);
this.setResizable(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setTitle("试卷批阅");
this.setBounds(360,110,800, 600);
dbconn = new QuestionBank();
conn = dbconn.getConnection();
String sql = "select * from "+s;
PreparedStatement pstm = null;
try {
pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
rs.next();
name = rs.getString("name");
chooseGrade = rs.getString("chooseGrade");
answer1 = rs.getString("answer1");
answer2 = rs.getString("answer2");
}
catch (SQLException ex) {
ex.printStackTrace();
}
temp = new JPanel();
temp.setLayout(new GridLayout(2,10));
exam = new JScrollPane(temp);
this.add(exam);
name1 = new JPanel();
name1.setLayout(new GridLayout(6,1));
temp.add(name1);
name1.add(new JLabel("姓名 "+name));
name1.add(new JLabel("选择题分数 "+chooseGrade));
name1.add(new JLabel("主观题分数"));
zggr = new JTextField();
name1.add(zggr);
next = new JButton("下一个");
name1.add(next);
temp.add(new JTextArea(answer1));
temp.add(new JTextArea(answer2));
next.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
showAnswer();
} catch (SQLException ex) {
ex.printStackTrace();
}
}});
}
public void showAnswer() throws SQLException {
if(rs.next()){
name = rs.getString("name");
chooseGrade = rs.getString("chooseGrade");
answer1 = rs.getString("answer1");
answer2 = rs.getString("answer2");
temp.removeAll();
temp.repaint();
temp.validate();
name1 = new JPanel();
name1.setLayout(new GridLayout(6, 1));
temp.add(name1);
name1.add(new JLabel("姓名 " + name));
name1.add(new JLabel("选择题分数 " + chooseGrade));
name1.add(new JLabel("主观题分数"));
zggr = new JTextField();
name1.add(zggr);
next = new JButton("下一个");
name1.add(next);
next.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
showAnswer();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
temp.add(new JTextArea(answer1));
temp.add(new JTextArea(answer2));
}