为什么JTable加载不进值

时间:2008-09-28 16:10:05   来源:论坛整理  作者:  编辑:chinaitzhe


在上面输入值,却table再加不进...
网友回复:你代码怎么写的阿?

网友回复: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 mark=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,mark}
};

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();
mark=tokenizer.nextToken();
}
/* v1=new Vector();
v1.add(id);
v1.add(name);
v1.add(mark);*/
}
public void taxis(){

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

}

网友回复:学习,帮顶
网友回复:你的addItem问题,
Table是通过tableModel.addRow(new Object[]{id, name , mark});添加数据的(addRow方法有好几个,你可以自己尝试)
id=tokenizer.nextToken();
name=tokenizer.nextToken();
mark=tokenizer.nextToken();
这个不对,你去看看java对象引用规则。

从UI上讲,用分割符输入并不好,最好还是用三个JTextField分别设置
网友回复:你这里addItem方法并没有说将数据加入jtable里面,当然jtable里是不会有数据更新的
网友回复:我也问问,怎么样才能加进去
网友回复:
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





public void addItem(){ 



String user=text.getText().trim(); 

StringTokenizer tokenizer=new StringTokenizer(user," ¦"); 

while(tokenizer.hasMoreTokens()){ 

id=tokenizer.nextToken(); 

name=tokenizer.nextToken(); 

mark=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,mark};



tableModel.setDataVector(newdata,column); 



} 







网友回复:楼上是最笨的添加方法
你可以查找更多关于TableModel的数据管理方式
从来没有使用Object[][]保存表格数据的
网友回复: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 mark = 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();
mark = tokenizer.nextToken();
}
Vector vt=new Vector();
vt.add(id);
vt.add(name);
vt.add(mark);
rowdata.add(vt);
/*
* v1=new Vector(); v1.add(id); v1.add(name); v1.add(mark);
*/
}

public void taxis() {

}

public static void main(String[] args) {
// TODO Auto-generated method stub
new StudentMark();
}
}
关键字:加载,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面