为什么JTable加载不进值? 在上面输入值,却table再加不进... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); }} 你的addItem问题,Table是通过tableModel.addRow(new Object[]{id, name , });添加数据的(addRow方法有好几个,你可以自己尝试)id=tokenizer.nextToken(); name=tokenizer.nextToken(); =tokenizer.nextToken(); 这个不对,你去看看java对象引用规则。从UI上讲,用分割符输入并不好,最好还是用三个JTextField分别设置 你这里addItem方法并没有说将数据加入jtable里面,当然jtable里是不会有数据更新的 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); } 楼上是最笨的添加方法你可以查找更多关于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 = 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(); }} 两个JPanel或者JFrame之间数据如何交互 java 小错误 java socket jbuilder有工具栏而jbuilder 2007没有工具栏况且它们菜单也不一样? 这个怎么理解? 高分求解Java和Asp交换用户登录信息的办法 关于serlet中调用jar中的类的问题? eclipse中V4ALL(可视化设计的插件)的用法 ~~~ 变量类型转换问题,送分问题,急用! ~~~ 关于不同类成员变量的调用问题 JAVA如何长期保存变量 javabean無法執行
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();
}}
Table是通过tableModel.addRow(new Object[]{id, name , });添加数据的(addRow方法有好几个,你可以自己尝试)
id=tokenizer.nextToken();
name=tokenizer.nextToken();
=tokenizer.nextToken();
这个不对,你去看看java对象引用规则。从UI上讲,用分割符输入并不好,最好还是用三个JTextField分别设置
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); }
你可以查找更多关于TableModel的数据管理方式
从来没有使用Object[][]保存表格数据的
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();
}
}