import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;public class Test extends JFrame
{
JTable table = new JTable(10,10); public Test()
{
Container contentPane = getContentPane(); contentPane.add(new JScrollPane(table),BorderLayout.CENTER); table.getModel().addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e)
{
int firstRow = e.getFirstRow(),column = e.getColumn(); String properties = " source=" + e.getSource() +
" firstRow= " + (firstRow == TableModelEvent.HEADER_ROW ? "HEADER_ROW" : Integer.toString(firstRow)) +
" lastRow= " + e.getLastRow() +
" column= " + (firstRow == TableModelEvent.ALL_COLUMNS ? "ALL_COLUMNS" : Integer.toString(column)); String typeString = new String();
int type = e.getType(); switch(type)
{
case TableModelEvent.DELETE:
typeString = "DELETE";
break;
case TableModelEvent.INSERT:
typeString = "INSERT";
break;
case TableModelEvent.UPDATE:
typeString = "UPDATE";
break;
}
properties += " type=" + typeString; JOptionPane.showMessageDialog(Test.this,e.getClass().getName() + "[" + properties + "]");
}
});
} public static void main(String args[])
{
GraphicJavaApplication.launch(new Test(),"Handling Table Model Events",300,300,450,220);
}
}class GraphicJavaApplication extends WindowAdapter
{
public static void launch(final JFrame f,String title,final int x,final int y,final int w,int h)
{
f.setTitle(title);
f.setBounds(x,y,w,h);
f.setVisible(true); f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); f.addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
System.exit(0);
}
});
}
}
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;public class Test extends JFrame
{
JTable table = new JTable(10,10); public Test()
{
Container contentPane = getContentPane(); contentPane.add(new JScrollPane(table),BorderLayout.CENTER); table.getModel().addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e)
{
int firstRow = e.getFirstRow(),column = e.getColumn(); String properties = " source=" + e.getSource() +
" firstRow= " + (firstRow == TableModelEvent.HEADER_ROW ? "HEADER_ROW" : Integer.toString(firstRow)) +
" lastRow= " + e.getLastRow() +
" column= " + (firstRow == TableModelEvent.ALL_COLUMNS ? "ALL_COLUMNS" : Integer.toString(column)); String typeString = new String();
int type = e.getType(); switch(type)
{
case TableModelEvent.DELETE:
typeString = "DELETE";
break;
case TableModelEvent.INSERT:
typeString = "INSERT";
break;
case TableModelEvent.UPDATE:
typeString = "UPDATE";
break;
}
properties += " type=" + typeString; JOptionPane.showMessageDialog(Test.this,e.getClass().getName() + "[" + properties + "]");
}
});
} public static void main(String args[])
{
GraphicJavaApplication.launch(new Test(),"Handling Table Model Events",300,300,450,220);
}
}class GraphicJavaApplication extends WindowAdapter
{
public static void launch(final JFrame f,String title,final int x,final int y,final int w,int h)
{
f.setTitle(title);
f.setBounds(x,y,w,h);
f.setVisible(true); f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); f.addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
System.exit(0);
}
});
}
}
import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4 import java.util.*;
5 public class SimpleTable{
6 public SimpleTable(){
7 JFrame f=new JFrame();
8 Object[][] playerInfo={
9 {"阿呆",new Integer(66),new Integer(32),new Integer(98),new Boolean(false)},
10 {"阿呆",new Integer(82),new Integer(69),new Integer(128),new Boolean(true)},
11 };
12 String[] Names={"姓名","语文","数学","总分","及格"};
13 JTable table=new JTable(playerInfo,Names);
14 table.setPreferredScrollableViewportSize(new Dimension(550,30));//注意此行,这样才能看到标题
15 JScrollPane scrollPane=new JScrollPane(table);
16 f.getContentPane().add(scrollPane,BorderLayout.CENTER);
17 f.setTitle("Simple Table");
18 f.pack();
19 f.show();
20 f.addWindowListener(new WindowAdapter() {
21 public void windowClosing(WindowEvent e) {
22 System.exit(0);
23 }
24 });
24 }
25 public static void main(String[] args){
26 SimpleTable b=new SimpleTable();
27 }
28 } 如果你不想用JScrollPane,要解决这个问题,你必须将程序修改如下:
JTable table=new JTable(p,n);
table.setPreferredScrollableViewportSize(new Dimension(550,30));
f.getContentPane().add(table.getTableHeader(),BorderLayout.NORTH);
f.getContentPane().add(table,BorderLayout.CENTER);
运行结果就会跟之前一样有行标题了.
public class MainTable extends AbstractTableModel
{
String[] columnNames = new String{"列一", "列二"};
public String getColumnName(int col)
{
return columnNames[col];
}
... ...
}