swt中提供的table好像不行吧,
这个地方有第三方的table,ktable和ttable,说不定可以满足你的要求:
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/external.html#tutorials
这个地方有第三方的table,ktable和ttable,说不定可以满足你的要求:
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/external.html#tutorials
http://www.kupzog.de/fkmk_uk/Programming/Downloads/downloads.html
我解释的很清楚了package tablelist;//太阳多高我多高;酒瓶不倒我不倒。
import javax.swing.*;
import java.awt.BorderLayout;
import java.io.*;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.MouseAdapter;
import javax.swing.table.*;
import java.awt.event.*;
public class Frame2 extends JFrame { //要加上一个判断是否为开始状态(没有任何行程)的代码
//文件的数量必须一开始就确定,不然在监听的时候会无法使用 jTable1.getValueAt(0,0);
String dirname = "/java/Vol_01"; //*开辟FILE类的实例,注意上面的IMPORT要引入IO×
File f1 = new File(dirname);
String list[] = f1.list(); //用list()方法出来的结果不带路径
int aROWa = list.length - 1; //因为实际读到的数量在数组表示里面多了一个文件
//*开始构建TABLE表格
//这样创建的TABLE是个模型,没有内容的
String[][] stats = new String[aROWa][3]; String[] column = new String[] {"文件名", "其他", "其他2"};
JTable jTable1 = new JTable(stats, column);
public Frame2() { setSize(300, 200); //2窗口4元素之一
setDefaultCloseOperation(EXIT_ON_CLOSE); //2窗口4元素之一 int aa = 0;
stats[aa][0] = "这样设置变量"; //用AA的变量来使用循环
stats[0][1] = "开心否"; //用这个来设置每个行的其他列的内容 jTable1.setAutoResizeMode(jTable1.AUTO_RESIZE_OFF); //没有也没有关系
// jTable1.setColumnSelectionAllowed(true);//没有也可,这个就是控制选择行的时候出现同时选择的东西
jTable1.setRowHeight(15); //设置行高 /**监听开始
jTable1.addMouseListener(new MouseAdapter() { //import java.awt.event.MouseAdapter; import java.awt.event.*;
public void mouseClicked (MouseEvent e){
if (e.getClickCount() == 1){//点1次就可以打开窗口
Frame3 frame3 = new Frame3(); jTable1.getValueAt(0,0);
setVisible(false);//可以让FRAME2消失的方法
}
}
});
监听结束 */
//准备要插入一个CLASS,并实例这个/
//开始监听1
jTable1.getModel().addTableModelListener(
new TableModelListener() {
public void tableChanged(TableModelEvent e) {
Frame3 frame3 = new Frame3(); setVisible(false); //可以让FRAME2消失的方法 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; //测试变量X在括号里面修改值后在外面的是否会跟着改变
JOptionPane.showMessageDialog(Frame2.this,
e.getClass().getName() +
"[" + properties + "]");
}
});//监听1 结束
JScrollPane jsp = new JScrollPane(jTable1); getContentPane().add(jsp, BorderLayout.CENTER); //2窗口4元素之一 setVisible(true); //显示底2个窗口不可缺少的4元素之一
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
} } private void jbInit() throws Exception {
}}