在上面输入值,却table再加不进...

解决方案 »

  1.   

    package com;import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.StringTokenizer;
    import java.util.Vector;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableModel;public class StudentMark extends JFrame implements ActionListener{
    JTextField text;
    DefaultTableModel tableModel;

    //Vector v1;
    JTable table;
    String id=null;
    String name=null;
    String =null;
    JPanel panel2;
    // Object [][] date;
         public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getActionCommand().equals("添加")){
    this.addItem();
    this.table.repaint();
    }
    else{
    JOptionPane.showInputDialog(this,"操作不成功");
    }
    }
    /**
     * @param args
     */ public StudentMark(){
    super("学生记录");
    this.setSize(400,200);
    //this.setLocation(300,200);
    this.setLayout(new GridLayout(3,1));


    String [] column={"序号","姓名","成绩"};
    /*Vector v2=new Vector();
    v2.add("序号");
    v2.add("姓名");
    v2.add("成绩");*/
    Object [][] date=
    {
    {"1","caojie","85"},
    {id,name,}
    };

    JButton button1=new JButton("添加");
    text=new JTextField(40);
        JPanel panel1=new JPanel();
        panel1.setLayout(new FlowLayout());
        panel1.add(text);
        panel1.add(button1);
        
        tableModel=new DefaultTableModel();
        tableModel.setDataVector(date,column);
        table=new JTable(tableModel);
        panel2=new JPanel();
        JScrollPane pane=new JScrollPane(table);
        panel2.add(pane);
        
        JButton button3=new JButton("排序");
        JPanel panel3=new JPanel();
        panel3.add(button3);
        
        button1.addActionListener(this);
       
        this.add(panel1);
        this.add(panel2);
        this.add(panel3);
        this.pack();
        this.setVisible(true);
    }
    public void addItem(){

    String user=text.getText().trim();
    StringTokenizer tokenizer=new StringTokenizer(user,"|");
    while(tokenizer.hasMoreTokens()){
     id=tokenizer.nextToken();
     name=tokenizer.nextToken();
     =tokenizer.nextToken();
    }
        /* v1=new Vector();
         v1.add(id);
         v1.add(name);
         v1.add();*/
    }
    public void taxis(){

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
             new StudentMark();
    }}
      

  2.   

    你的addItem问题,
    Table是通过tableModel.addRow(new Object[]{id, name , });添加数据的(addRow方法有好几个,你可以自己尝试)
    id=tokenizer.nextToken(); 
    name=tokenizer.nextToken(); 
    =tokenizer.nextToken(); 
    这个不对,你去看看java对象引用规则。从UI上讲,用分割符输入并不好,最好还是用三个JTextField分别设置
      

  3.   

    你这里addItem方法并没有说将数据加入jtable里面,当然jtable里是不会有数据更新的
      

  4.   


    public void addItem(){ String user=text.getText().trim(); 
    StringTokenizer tokenizer=new StringTokenizer(user," ¦"); 
    while(tokenizer.hasMoreTokens()){ 
    id=tokenizer.nextToken(); 
    name=tokenizer.nextToken(); 
    =tokenizer.nextToken(); Object [][] newdata= new Object[date.length+1][];
    for(int i=0;i<date.length;i++)
    newdata[i] = date[i];
    newdata[date.length] = new Object[]{id,name,};tableModel.setDataVector(newdata,column); } 
      

  5.   

    楼上是最笨的添加方法
    你可以查找更多关于TableModel的数据管理方式
    从来没有使用Object[][]保存表格数据的
      

  6.   

    package com;import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.StringTokenizer;
    import java.util.Vector;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableModel;public class StudentMark extends JFrame implements ActionListener { JTextField text; DefaultTableModel tableModel;
    Vector rowdata=new Vector();
    // Vector v1;
    JTable table; String id = null; String name = null;

    String  = null; JPanel panel2; // Object [][] date;
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getActionCommand().equals("添加")) {
    System.out.println("添加");
    this.addItem();
    this.table.updateUI();
    } else {
    JOptionPane.showInputDialog(this, "操作不成功");
    }
    } /**
     * @param args
     */ public StudentMark() {
    super("学生记录");
    this.setSize(400, 200);
    // this.setLocation(300,200);
    this.setLayout(new GridLayout(3, 1)); String[] column = { "序号", "姓名", "成绩" };
    Vector columns=new Vector();
    for(int i=0;i<column.length;i++){
    columns.add(column[i]);
    }
    /*
     * Vector v2=new Vector(); v2.add("序号"); v2.add("姓名"); v2.add("成绩");
     */
    Object[][] data = { { "1", "caojie", "85" } };

    Vector vt=new Vector();
    vt.add("1");
    vt.add("caojie");
    vt.add("85");
    rowdata.add(vt);
    JButton button1 = new JButton("添加");
    text = new JTextField(40);
    JPanel panel1 = new JPanel();
    panel1.setLayout(new FlowLayout());
    panel1.add(text);
    panel1.add(button1); tableModel = new DefaultTableModel();
    // tableModel.setDataVector(data, column);
    tableModel.setDataVector(rowdata, columns);
    table = new JTable(tableModel);
    panel2 = new JPanel();
    JScrollPane pane = new JScrollPane(table);
    panel2.add(pane); JButton button3 = new JButton("排序");
    JPanel panel3 = new JPanel();
    panel3.add(button3); button1.addActionListener(this); this.add(panel1);
    this.add(panel2);
    this.add(panel3);
    this.pack();
    this.setVisible(true);
    } public void addItem() { String user = text.getText().trim();
    StringTokenizer tokenizer = new StringTokenizer(user, " |");
    while (tokenizer.hasMoreTokens()) {
    id = tokenizer.nextToken();
    name = tokenizer.nextToken();
     = tokenizer.nextToken();
    }
    Vector vt=new Vector();
    vt.add(id);
    vt.add(name);
    vt.add();
    rowdata.add(vt);
    /*
     * v1=new Vector(); v1.add(id); v1.add(name); v1.add();
     */
    } public void taxis() { } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new StudentMark();
    }
    }