编写一程序,用哈希表实现学生成绩单的存储与查询

public HashTest() throws HeadlessException {
super("学生成绩管理");
ht = new Hashtable();
lblsearchbyidorname = new JLabel("学号:");
txfidorname = new JTextField(20);
lblno = new JLabel("学号");
lblname = new JLabel("姓名");
lblscore = new JLabel("分数");
addno = new JTextField(10);
addname = new JTextField(12);
addscore = new JTextField(10);
btnsearchbyidorname = new JButton("查找-->");
btnadd = new JButton("新增");
btndelete = new JButton("删除");
colnames = new Vector();
colnames.add("学号");
colnames.add("姓名");
colnames.add("成绩");
data = new Vector();
reader = new JTable(new ReaderTableModel(data,colnames));
reader.setPreferredSize(new Dimension(700,260));
JPanel pnlsearch = new JPanel();//mianban
pnlsearch.add(lblsearchbyidorname);
pnlsearch.add(txfidorname);
pnlsearch.add(btnsearchbyidorname);
pnlsearch.add(btndelete);但是在eclipse上调试,却说reader = new JTable(new ReaderTableModel(data,colnames));这句出错,是 ReaderTableModel无法解析,跪求高手帮忙,急需.......
代码我有完整的,只是补充说明不能全写出来,我就写了一部分

第1个回答  2009-03-31
import java.util.Hashtable;

声明引用了吗?

给你完整代码

学生类Student,代码如下:

class Student{

private String no;

private String name;

private Integer score;

public String getNo() {

return no;

}

public void setNo(String no) {

this.no = no;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getScore() {

return score;

}

public void setScore(Integer score) {

this.score = score;

}

public String toString(){

return "学号:" + no + " 姓名:" + name + " 成绩:" + score;

}

}

主类HashTest,代码如下:

import javax.swing.*;

import java.util.Vector;

import java.util.Hashtable;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class HashTest extends JFrame {

JLabel lblsearchbyidorname;

JTextField txfidorname;

JButton btnsearchbyidorname;

JTable reader;

JButton btnadd;

JButton btndelete;

Hashtable ht;

Vector colnames;

JLabel lblno;

JLabel lblname;

JLabel lblscore;

JTextField addno;

JTextField addname;

JTextField addscore;

Vector data;

public HashTest() throws HeadlessException {

super("学生成绩管理");

ht = new Hashtable();

lblsearchbyidorname = new JLabel("学号:");

txfidorname = new JTextField(20);

lblno = new JLabel("学号");

lblname = new JLabel("姓名");

lblscore = new JLabel("分数");

addno = new JTextField(10);

addname = new JTextField(12);

addscore = new JTextField(10);

btnsearchbyidorname = new JButton("查找-->");

btnadd = new JButton("新增");

btndelete = new JButton("删除");

colnames = new Vector();

colnames.add("学号");

colnames.add("姓名");

colnames.add("成绩");

data = new Vector();

reader = new JTable(new ReaderTableModel(data,colnames));

reader.setPreferredSize(new Dimension(700,260));

JPanel pnlsearch = new JPanel();

pnlsearch.add(lblsearchbyidorname);

pnlsearch.add(txfidorname);

pnlsearch.add(btnsearchbyidorname);

pnlsearch.add(btndelete);

JScrollPane scptable = new JScrollPane(reader,

ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

JPanel pnladd = new JPanel();

pnladd.add(lblno);

pnladd.add(addno);

pnladd.add(lblname);

pnladd.add(addname);

pnladd.add(lblscore);

pnladd.add(addscore);

pnladd.add(btnadd);

reader.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

ScoreHandler sh = new ScoreHandler();

btnadd.addActionListener(sh);

btndelete.addActionListener(sh);

btnsearchbyidorname.addActionListener(sh);

Container c = getContentPane();

c.add(pnlsearch,BorderLayout.NORTH);

c.add(scptable,BorderLayout.CENTER);

c.add(pnladd,BorderLayout.SOUTH);

setSize(600,400);

setVisible(true);

}

public static void main(String[] args) {

new HashTest();

}

class ScoreHandler implements ActionListener{

public void actionPerformed(ActionEvent e) {

JButton btn = (JButton)e.getSource();

if(btn == btnsearchbyidorname){

Object obj = ht.get(txfidorname.getText().trim());

if(obj == null){

JOptionPane.showMessageDialog(null,"没有找到!");

}else{

JOptionPane.showMessageDialog(null,"查询结果如下:\n" + obj.toString());

}

}else if(btn == btnadd){

Student stu = new Student();

stu.setName(addname.getText().trim());

stu.setNo(addno.getText().trim());

stu.setScore(Integer.valueOf(addscore.getText().trim()));

ht.put(stu.getNo(),stu);

addDataToTable(stu);

addname.setText("");

addno.setText("");

addscore.setText("");

}else if(btn == btndelete){

int index = reader.getSelectedRow();

if (index == -1){

JOptionPane.showMessageDialog(null,"你没有选择学生!");

}else{

String no = (String)reader.getValueAt(index,0);

Student stu = (Student)ht.remove(no);

JOptionPane.showMessageDialog(null,"学生成绩删除!\n" + stu.toString());

data.remove(index);

reader.repaint();

}

}

}

}

public void addDataToTable(Student stu){

Vector temp = new Vector();

temp.add(stu.getNo());

temp.add(stu.getName());

temp.add(stu.getScore());

data.add(temp);

reader.repaint();

}

}
相似回答