removeRow public void removeRow(int row) Removes the row at row from the model. Notification of the row being removed will be sent to all the listeners. Parameters: row - the row index of the row to be removed Throws: ArrayIndexOutOfBoundsException - if the row was invalid
import javax.swing.table.AbstractTableModel; import javax.swing.*; import java.awt.*; import java.awt.event.*;public class TableModel1{
public TableModel1() {
JFrame f = new JFrame(); MyTable mt=new MyTable(); JTable t=new JTable(mt); t.setPreferredScrollableViewportSize(new Dimension(550, 30)); JScrollPane s = new JScrollPane(t);
f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String args[]) {
new TableModel1(); } }class MyTable extends AbstractTableModel{ Object[][] p = { {"阿呆", new Integer(66), new Integer(32), new Integer(98), new Boolean(false),new Boolean(false)}, {"阿瓜", new Integer(85), new Integer(69), new Integer(154), new Boolean(true),new Boolean(false)}, }; String[] n = {"姓名", "语文", "数学", "总分", "及格", "作弊"}; public int getColumnCount() { return n.length; } public int getRowCount() { return p.length; } public String getColumnName(int col) { return n[col]; } public Object getValueAt(int row, int col) { return p[row][col]; }
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
} }实现清除的代码你就自己写一个直接对Object[][] p进行操作的方法吧
这就是那个传说中的扩展 AbstractTableModel的吧,只能显示两行定义了的数据,我最需要的就是对它清除的代码,以下是我在你的代码上加的一个按钮来清空public class TableModel1 implements ActionListener{ JButton del; public TableModel1() {
JFrame f = new JFrame(); del=new JButton("delete"); del.addActionListener(this); MyTable mt=new MyTable(); JTable t=new JTable(mt); t.setPreferredScrollableViewportSize(new Dimension(550, 30)); JScrollPane s = new JScrollPane(t);
public void removeRow(int row)
Removes the row at row from the model.
Notification of the row being removed will be sent to all the listeners.
Parameters:
row - the row index of the row to be removed
Throws:
ArrayIndexOutOfBoundsException - if the row was invalid
在AbstractTableModel中对数据进行操作,如添加,删除,然后重设置表格的MODEL
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class TableModel1{
public TableModel1() {
JFrame f = new JFrame();
MyTable mt=new MyTable();
JTable t=new JTable(mt);
t.setPreferredScrollableViewportSize(new Dimension(550, 30));
JScrollPane s = new JScrollPane(t);
f.getContentPane().add(s, BorderLayout.CENTER);
f.setTitle("JTable1");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
} public static void main(String args[]) {
new TableModel1();
}
}class MyTable extends AbstractTableModel{ Object[][] p = {
{"阿呆", new Integer(66),
new Integer(32), new Integer(98), new Boolean(false),new Boolean(false)},
{"阿瓜", new Integer(85),
new Integer(69), new Integer(154), new Boolean(true),new Boolean(false)},
}; String[] n = {"姓名",
"语文",
"数学",
"总分",
"及格",
"作弊"}; public int getColumnCount() {
return n.length;
} public int getRowCount() {
return p.length;
} public String getColumnName(int col) {
return n[col];
} public Object getValueAt(int row, int col) {
return p[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}实现清除的代码你就自己写一个直接对Object[][] p进行操作的方法吧
JButton del;
public TableModel1() {
JFrame f = new JFrame();
del=new JButton("delete");
del.addActionListener(this);
MyTable mt=new MyTable();
JTable t=new JTable(mt);
t.setPreferredScrollableViewportSize(new Dimension(550, 30));
JScrollPane s = new JScrollPane(t);
f.getContentPane().add(s, BorderLayout.CENTER);
f.getContentPane().add(del,BorderLayout.SOUTH);
f.setTitle("JTable1");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==del)
Object[][] p={}; //这是错误的!!不知道如何
} //写555555555
public static void main(String args[]) {
new TableModel1();
}
}
for(int i=0;i<p.length;i++){
for(int j=0;j<p[i].length;j++){
p[i][j]="";
}
}
再添加一个addRow(Object[] p1)方法,需考虑添加的行越界的情况.可参照StringBuffer()的做法,越界动态增长.
for(int i=0;i<p.length;i++){
for(int j=0;j<p[i].length;j++){
p[i][j]="";
}
}
后通不过,55555555555,现在我把我的那个程序给你看看哈,我要的效果就是再次查询时,第一次的结果不在
帮忙改改哈!!!!!import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.net.*;
class chaxun extends JFrame implements ActionListener,ItemListener
{
Object a[][];Object columnName[]={"isbn","书名","作者","总数量","外借","出版社"};
JTable table;JButton queding;
Container container;
Connection con;Statement sql;ResultSet rs;
JProgressBar p_bar;JPanel panel;JLabel label,label2;JTextField text;
JComboBox box1;
String isbn,book,author,total,lend,publish;
chaxun()
{
super("数据查询");
String[] s={"按出版社","按作者","按书名"};
setSize(600,400);
a=new Object[15][6];
table=new JTable(a,columnName);
panel=new JPanel();
label=new JLabel("请输入出版社",JLabel.CENTER);
label2=new JLabel("",JLabel.CENTER);
text=new JTextField(30);
queding=new JButton("Search");
box1=new JComboBox(s);
panel.setLayout(new GridLayout(1,4));
panel.add(label);panel.add(text);panel.add(box1);panel.add(queding);
box1.addItemListener(this);
queding.addActionListener(this);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
queding.addActionListener(this);
p_bar=new JProgressBar(JProgressBar.VERTICAL,0,50);
p_bar.setStringPainted(true);
container=getContentPane();
container.add(panel,BorderLayout.NORTH);
container.add(new JScrollPane(table),BorderLayout.CENTER);
container.add(p_bar,BorderLayout.WEST);
container.add(label2,BorderLayout.SOUTH);
}
public void itemStateChanged(ItemEvent e)
{
if(e.getItemSelectable()==box1)
{
if(box1.getSelectedIndex()==2)
label.setText("请输入按书名");
else if(box1.getSelectedIndex()==1)
label.setText("请输入作者");
else if(box1.getSelectedIndex()==0)
label.setText("请输入出版社");
}
}
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource()==queding)
{
//Object[][] p={}; 改成:
/*for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]="";
}
}*/
int i=0;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try
{
con=DriverManager.getConnection("jdbc:odbc:tushu","","");
sql=con.createStatement();
if(label.getText()=="请输入按书名")
{
rs=sql.executeQuery("SELECT * FROM book ");
while(rs.next()) //String isbn,book,author,total,lend,publish;
{
isbn=rs.getString(1);
book=rs.getString(2);
author=rs.getString(3);
total=rs.getString(4);
lend=rs.getString(5);
publish=rs.getString(6);
if (book.equals(text.getText().trim()))
{
a[i][0]=isbn;
a[i][1]=book;
a[i][2]=author;
a[i][3]=total;
a[i][4]=lend;
a[i][5]=publish;
i++;
}
label2.setText("共找到了"+i+"本书");
}con.close();
}
else if(label.getText()=="请输入作者")
{
rs=sql.executeQuery("SELECT * FROM book ");
while(rs.next()) //String isbn,book,author,total,lend,publish;
{
isbn=rs.getString(1);
book=rs.getString(2);
author=rs.getString(3);
total=rs.getString(4);
lend=rs.getString(5);
publish=rs.getString(6);
if (author.equals(text.getText().trim()))
{
a[i][0]=isbn;
a[i][1]=book;
a[i][2]=author;
a[i][3]=total;
a[i][4]=lend;
a[i][5]=publish;
i++;
} label2.setText("共找到了"+i+"本书");
}con.close();
}
else if(label.getText()=="请输入出版社")
{
rs=sql.executeQuery("SELECT * FROM book ");
while(rs.next()) //String isbn,book,author,total,lend,publish;
{
isbn=rs.getString(1);
book=rs.getString(2);
author=rs.getString(3);
total=rs.getString(4);
lend=rs.getString(5);
publish=rs.getString(6);
if (publish.equals(text.getText().trim()))
{
a[i][0]=isbn;
a[i][1]=book;
a[i][2]=author;
a[i][3]=total;
a[i][4]=lend;
a[i][5]=publish;
i++;
} label2.setText("共找到了"+i+"本书");
}con.close();
}
}
catch(SQLException e1){}
}
}
}
再这样:
//...
a[i][0]=isbn;
a[i][1]=book;
a[i][2]=author;
a[i][3]=total;
a[i][4]=lend;
a[i][5]=publish;
i++;
if(i>=a.length) a=extendObjectArray(a); //调用动态增加数组方法
//...
动态增加数组方法:
private Object extendObjectArray(Object[][] a){
Object[][] array = new Object[a.length*2][a[0].length];
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
array[i][j] = a[i][j]; //保存a中的值
}
}
for(int i = a.length;i<array.length;i++ ){
for(int j=0;j<array[i].length;j++){
array[i][j] = "";
}
}
return array;
}
private Object[][] extendObjectArray(Object[][] a){
后为什么还要 array[i][j] = "";呢?? 我是不是有点笨呢??呵呵,顺便把你的邮箱给我吧,如果我的这个还没弄出来,我就把我的文件传到你那里,帮我改改好吗??谢了
array[i][j] = "";初始化为空字符串对象.如果不初始化,报表显示的时候会抛出NullPointException异常.(表格中显示的字符串是通过array[i][j].toString得到的)
还是要多自己动动手的,这样才有领悟!!
不是xxxhehe 工资有好多呢,大概吧,
我也快工作了,(大三下了)想有个底,加上我干这行的概率不是很大