求教一些关于JTable的知识

nethaoke 2007-06-22 09:48:16
让JTable能隐藏列 冻结列 还有现实不规则表 求大家有什么办法 或者一些相关的源码
...全文
219 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdxk 2007-07-05
  • 打赏
  • 举报
回复
jdk的demo有最完整的
zhuokai 2007-07-02
  • 打赏
  • 举报
回复

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;

public class FixedColumnExample extends JFrame {
Object[][] data;
Object[] column;
JTable fixedTable,table;

public FixedColumnExample() {
super( "Fixed Column Example" );
setSize( 400, 150 );

data = new Object[][]{
{"1","11","A","","","","",""},
{"2","22","","B","","","",""},
{"3","33","","","C","","",""},
{"4","44","","","","D","",""},
{"5","55","","","","","E",""},
{"6","66","","","","","","F"}};
column = new Object[]{"fixed 1","fixed 2","a","b","c","d","e","f"};

AbstractTableModel fixedModel = new AbstractTableModel() {
public int getColumnCount() { return 2; }
public int getRowCount() { return data.length; }
public String getColumnName(int col) {
return (String)column[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
};
AbstractTableModel model = new AbstractTableModel() {
public int getColumnCount() { return column.length -2; }
public int getRowCount() { return data.length; }
public String getColumnName(int col) {
return (String)column[col +2];
}
public Object getValueAt(int row, int col) {
return data[row][col+2];
}
public void setValueAt(Object obj, int row, int col) {
data[row][col +2] = obj;
}
public boolean CellEditable(int row, int col) {
return true;
}
};

fixedTable = new JTable( fixedModel ) {
public void valueChanged(ListSelectionEvent e) {
super.valueChanged(e);
checkSelection(true);
}
};
table = new JTable( model ) {
public void valueChanged(ListSelectionEvent e) {
super.valueChanged(e);
checkSelection(false);
}
};
fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

JScrollPane scroll = new JScrollPane( table );
JViewport viewport = new JViewport();
viewport.setView(fixedTable);
viewport.setPreferredSize(fixedTable.getPreferredSize());
scroll.setRowHeaderView(viewport);
scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER,fixedTable.getTableHeader());

getContentPane().add(scroll, BorderLayout.CENTER);
}

private void checkSelection(boolean isFixedTable) {
int fixedSelectedIndex = fixedTable.getSelectedRow();
int selectedIndex = table.getSelectedRow();
if (fixedSelectedIndex != selectedIndex) {
if (isFixedTable) {
table.setRowSelectionInterval(fixedSelectedIndex,fixedSelectedIndex);
} else {
fixedTable.setRowSelectionInterval(selectedIndex,selectedIndex);
}
}
}

public static void main(String[] args) {
FixedColumnExample frame = new FixedColumnExample();
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit(0);
}
});
frame.setVisible(true);
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧