java swing界面化设计 jtable,如果在后期给表格增加多行记录?请给下参考代码,谢谢 50

 我来答
lzs丶灬
2017-01-12 · TA获得超过632个赞
知道小有建树答主
回答量:881
采纳率:100%
帮助的人:514万
展开全部
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.util.*;
import java.util.List;

public class StudentManage extends JFrame{

    public final static String[] CH_NUM = {"一","二","三","四","五","六","七","八","九","十"};
    public final static String ROOT = "班级管理";
    public final static int GRADE_NUM = 3;
    public final static int CLASS_NUM = 3;

    private Map<String, List<Student>> classes;

    public StudentManage() {
        setTitle("学生管理系统");
        setSize(300, 300);
        setLayout(new BorderLayout());

        if(classes == null) classes = new HashMap<>();

        DefaultMutableTreeNode top = new DefaultMutableTreeNode(ROOT);
        DefaultMutableTreeNode[] gradeNodes = new DefaultMutableTreeNode[GRADE_NUM];

        for (int i = 0; i < GRADE_NUM; i++) {
            gradeNodes[i] = new DefaultMutableTreeNode(CH_NUM[i] + "年级");
            for (int j = 0; j < CLASS_NUM; j++) {
                gradeNodes[i].add(new DefaultMutableTreeNode(CH_NUM[j] + "班"));
            }
            top.add(gradeNodes[i]);
        }
        final JTree tree = new JTree(top);

        String title[] = {"ID","姓名","性别","年龄","地址"};
        final DefaultTableModel model = new DefaultTableModel(title, 0);
        JTable table=new JTable(model);

        tree.addTreeSelectionListener(new TreeSelectionListener() {
            @Override
            public void valueChanged(TreeSelectionEvent e) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent();
                if (node == null) return;
                Object object = node.getUserObject();
                if (node.isLeaf()) {
                    List<Student> stdList = classes.get(getFullPath(node));
                    Object[][] data = new Object[stdList.size()][5];
                    for (int i = 0; i < stdList.size(); i++) {
                        data[i][0] = stdList.get(i).getId();
                        data[i][1] = stdList.get(i).getName();
                        data[i][2] = stdList.get(i).getSex();
                        data[i][3] = stdList.get(i).getAge();
                        data[i][4] = stdList.get(i).getAddress();
                    }
                    while(model.getRowCount()>0){
                        model.removeRow(model.getRowCount()-1);
                    }
                    for (int i = 0; i < stdList.size(); i++) {
                        model.addRow(data[i]);
                    }
                    model.fireTableDataChanged();
                }
            }
        });

        add(tree, BorderLayout.WEST);
        add(new JScrollPane(table), BorderLayout.CENTER);

        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private String getFullPath(DefaultMutableTreeNode defaultMutableTreeNode){
        StringBuilder sb = new StringBuilder();
        Object[] objs = defaultMutableTreeNode.getUserObjectPath();
        for (int i = 0; i < objs.length; i++) {
            sb.append(objs[i]);
        }
        return sb.toString().replace(ROOT,"");
    }

    public void init(){
        for (int i = 0; i < GRADE_NUM; i++) {
            for (int j = 0; j < CLASS_NUM; j++) {
                int n = new Random().nextInt(30)+1;
                List<Student> stdList = new ArrayList<>(n);
                for (int k = 0; k < n; k++) {
                    stdList.add(new Student(k,"学生"+k,"男",
                            12,“”));
                }
                classes.put(CH_NUM[i] + "年级"+ CH_NUM[j] +"班", stdList);
            }
        }
    }

    public static void main(String[] args) {
        StudentManage studentManage = new StudentManage();
        studentManage.init();
    }

}

class Student {
    private int id;
    private String name;
    private String sex;
    private int age;
    private String address;

    public Student(int id, String name, String sex, int age, String address) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.address = address;
    }

    public Student() {

    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式