JTable中我用数据库的内容显示可以!,我要通过JTable割除数据库的一行,可以割除但是,当时显示不出来,要全部退出,再编译执行,才可以 JTable中我用数据库的内容显示可以!,我要通过JTable割除数据库的一行,可以割除但是,当时显示不出来,要全部退出,再编译执行,才可以显示少拉一行,请问怎么解决可以变成动态的时时显示啊分没拉 今天用光拉 谢谢大家帮我看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看这个例子// Created on 2005-4-24package Control.ViewControl;import javax.swing.table.*;import java.util.*;public class InnerTableModel extends AbstractTableModel { private String colName[]; private Class colClass[]; private ArrayList cellData = new ArrayList(1000); private boolean colEditable[]; public void resetTable() { colName = null; colClass = null; cellData.clear(); colEditable = null; } public InnerTableModel() { resetTable(); } public void addColumns(String colName[], Class colClass[], boolean editable) { assert colName.length == colClass.length; this.colName = colName; this.colClass = colClass; int col = colName.length; colEditable = new boolean[col]; for (int i = 0; i < col; i++) colEditable[i] = editable; } public int getRowCount() { return cellData.size(); } public int getColumnCount() { return colName.length; } public Class getColumnClass(int col) { return colClass[col]; } public void setColumnEditable(int col, boolean access) { colEditable[col] = access; } public Object getValueAt(int row, int col) { Object[] line = (Object[]) cellData.get(row); return line[col]; } public String getColumnName(int col) { return colName[col]; } public boolean isCellEditable(int row, int col) { return colEditable[col]; } public void setValueAt(Object val, int row, int col) { Object line[] = (Object [])cellData.get(row); line[col] = val; cellData.set(row, line); fireTableDataChanged(); } public void insertBlankRow(int index) { Object line[] = new Object[colName.length]; cellData.add(index, line); fireTableDataChanged(); } public void addBlankRow() { Object line[] = new Object[colName.length]; cellData.add(line); fireTableDataChanged(); } public void insertBlankRow(int index, int lines) { Object line[] = new Object[colName.length]; for (int i = 0; i < lines; i++) cellData.add(index, line); fireTableDataChanged(); } public void addBlankRow(int lines) { Object line[] = new Object[colName.length]; for (int i = 0; i < lines; i++) cellData.add(line); fireTableDataChanged(); } public void addSpecificRow(Object line[]) { assert line.length == colName.length; cellData.add(line); } public void addSpecificRow(ArrayList lines) { Object[] line = (Object[])lines.get(0); assert line.length == colName.length; cellData.addAll(lines); } public void removeRow(int index) { cellData.remove(index); fireTableDataChanged(); }}// Created on 2005-4-24package Control.ViewControl;import javax.swing.JFrame;import javax.swing.JTable;public class ab extends JFrame { private javax.swing.JPanel jContentPane = null; private JTable jTable = null; /** * This method initializes jTable * * @return javax.swing.JTable */ private JTable getJTable() { if (jTable == null) { InnerTableModel ar= new InnerTableModel(); String n[]={"name","age","abroad"}; Class c[] = {String.class,Integer.class,Boolean.class }; ar.addColumns(n,c,true); Object d[]={"chen",new Integer(23),new Boolean(true)}; ar.addSpecificRow(d); jTable = new JTable(ar); ar.addBlankRow(); ar.insertBlankRow(0); ar.removeRow(1); } return jTable; } public static void main(String[] args) { ab dd = new ab(); } /** * This is the default constructor */ public ab() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(300,200); this.setTitle("JFrame"); this.setContentPane(getJContentPane()); this.setVisible(true); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private javax.swing.JPanel getJContentPane() { if(jContentPane == null) { jContentPane = new javax.swing.JPanel(); jContentPane.setLayout(new java.awt.BorderLayout()); jContentPane.add(getJTable(), java.awt.BorderLayout.NORTH); } return jContentPane; }}这样是可以动态处理表格的,但是也有问题,就是表头没有显示,不知道是什么问题。问了也没有人回答。csdn现在好像没什么厉害的人了 private javax.swing.JPanel getJContentPane() { if(jContentPane == null) { jContentPane = new javax.swing.JPanel(); jContentPane.setLayout(new java.awt.BorderLayout()); jContentPane.add(new JScrollPane(getJTable()), java.awt.BorderLayout.NORTH); } return jContentPane; }}看文档把问题解决了这个table是可以动态改变内容的,当然还要改,把改变内容的代码放到一个并行线程去执行 因该是你没有动态更新table,更新treemodel中的数组之后,再调用treemodle.fireTableDataChanged();这样就可以动态更新了。 菜鸟求助,新手学写代码望指导 一个有关for循环的问题! Java中String型转Date毫秒可以转吗 applet 如何播放 mp3 wma 格式文件 prt("")和println("")有什么區別 再问JComboBox下拉框被遮挡的问题 通过java 调用linux 下命令 如何实现 怎样在主界面中取得对话框中的值? 函数调用问题 如何在jframe中导入两张图片(gif),让一个押在另一个上边…… JTable刷新的时候遇到的一个奇怪的问题 怎样在JTable中更新数据?
// Created on 2005-4-24
package Control.ViewControl;import javax.swing.table.*;
import java.util.*;public class InnerTableModel extends AbstractTableModel {
private String colName[];
private Class colClass[];
private ArrayList cellData = new ArrayList(1000);
private boolean colEditable[]; public void resetTable() {
colName = null;
colClass = null;
cellData.clear();
colEditable = null;
}
public InnerTableModel() {
resetTable();
}
public void addColumns(String colName[], Class colClass[], boolean editable) {
assert colName.length == colClass.length;
this.colName = colName;
this.colClass = colClass;
int col = colName.length;
colEditable = new boolean[col];
for (int i = 0; i < col; i++)
colEditable[i] = editable;
}
public int getRowCount() {
return cellData.size();
}
public int getColumnCount() {
return colName.length;
}
public Class getColumnClass(int col) {
return colClass[col];
}
public void setColumnEditable(int col, boolean access) {
colEditable[col] = access;
}
public Object getValueAt(int row, int col) {
Object[] line = (Object[]) cellData.get(row);
return line[col];
}
public String getColumnName(int col) {
return colName[col];
}
public boolean isCellEditable(int row, int col) {
return colEditable[col];
}
public void setValueAt(Object val, int row, int col) {
Object line[] = (Object [])cellData.get(row);
line[col] = val;
cellData.set(row, line);
fireTableDataChanged();
}
public void insertBlankRow(int index) {
Object line[] = new Object[colName.length];
cellData.add(index, line);
fireTableDataChanged();
}
public void addBlankRow() {
Object line[] = new Object[colName.length];
cellData.add(line);
fireTableDataChanged();
}
public void insertBlankRow(int index, int lines) {
Object line[] = new Object[colName.length];
for (int i = 0; i < lines; i++)
cellData.add(index, line);
fireTableDataChanged();
}
public void addBlankRow(int lines) {
Object line[] = new Object[colName.length];
for (int i = 0; i < lines; i++)
cellData.add(line);
fireTableDataChanged();
}
public void addSpecificRow(Object line[]) {
assert line.length == colName.length;
cellData.add(line);
}
public void addSpecificRow(ArrayList lines) {
Object[] line = (Object[])lines.get(0);
assert line.length == colName.length;
cellData.addAll(lines);
}
public void removeRow(int index) {
cellData.remove(index);
fireTableDataChanged();
}
}
// Created on 2005-4-24
package Control.ViewControl;import javax.swing.JFrame;
import javax.swing.JTable;
public class ab extends JFrame { private javax.swing.JPanel jContentPane = null;
private JTable jTable = null;
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {
InnerTableModel ar= new InnerTableModel();
String n[]={"name","age","abroad"};
Class c[] = {String.class,Integer.class,Boolean.class };
ar.addColumns(n,c,true);
Object d[]={"chen",new Integer(23),new Boolean(true)};
ar.addSpecificRow(d);
jTable = new JTable(ar);
ar.addBlankRow();
ar.insertBlankRow(0);
ar.removeRow(1);
}
return jTable;
}
public static void main(String[] args) {
ab dd = new ab();
}
/**
* This is the default constructor
*/
public ab() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300,200);
this.setTitle("JFrame");
this.setContentPane(getJContentPane());
this.setVisible(true);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private javax.swing.JPanel getJContentPane() {
if(jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.add(getJTable(), java.awt.BorderLayout.NORTH);
}
return jContentPane;
}
}
这样是可以动态处理表格的,但是也有问题,就是表头没有显示,不知道是什么问题。
问了也没有人回答。csdn现在好像没什么厉害的人了
if(jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.add(new JScrollPane(getJTable()), java.awt.BorderLayout.NORTH);
}
return jContentPane;
}
}
看文档把问题解决了
这个table是可以动态改变内容的,当然还要改,把改变内容的代码放到一个并行线程去执行