精通JTable的高手请出手!

seagullgao 2003-08-25 10:54:08
不好意思,我有2个问题要问。

1。 刷新JTable :代码如下:
this.myModel = new MyTableModel(column,rowData);
this.sorter = new TableSorter(myModel); //ADDED THIS
this.detailTable =new JTable(sorter);

当我更新了column,rowData后,我调用了
myModel = new MyTableModel(column,rowData);
detailTable.setModel(myModel);
执行后Table可以刷新,但是所有实现在sorter里的排序功能都不管用了。

2 。如何让JTable的第一列固定,滚动的时候永远在最左边???

有实现好的JTable代码最好了,先谢谢了。





...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun2927 2003-08-25
  • 打赏
  • 举报
回复
帮你up
duoshanx 2003-08-25
  • 打赏
  • 举报
回复
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class LockColumn extends JFrame
{
class SharedModel extends AbstractTableModel{
public int getRowCount(){return 10;}
public int getColumnCount(){return 10;}
public Object getValueAt(int r,int c){
return "("+r+","+c+")";
}
}
TableModel sharedModel=new SharedModel();
JTable table=new JTable(sharedModel),
headerTable=new JTable(sharedModel);
TableColumnModel tcm=table.getColumnModel();
TableColumn firstColumn=tcm.getColumn(0);
public LockColumn(){
setSize(600,480);
Container cp=getContentPane();
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
headerTable.getTableHeader().setReorderingAllowed(false);
headerTable.setPreferredScrollableViewportSize(
new Dimension(firstColumn.getPreferredWidth()+headerTable.getColumnModel().getColumnMargin(),0));
cp.add(new ControlPane(),BorderLayout.NORTH);
cp.add(new JScrollPane(table),BorderLayout.CENTER);
}
public static void main(String argv[]){
new LockColumn().show();
}
class ControlPane extends JPanel{
JCheckBox checkBox=new JCheckBox("First Column Locked");
public ControlPane(){
add(checkBox);
checkBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JScrollPane scrollPane=(JScrollPane)SwingUtilities.getAncestorOfClass(JScrollPane.class,table);
if(checkBox.isSelected()){
tcm.removeColumn(firstColumn);
scrollPane.setRowHeaderView(headerTable);
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,headerTable.getTableHeader());
}else{
tcm.addColumn(firstColumn);
int numCols=tcm.getColumnCount();
tcm.moveColumn(numCols-1,0);
scrollPane.setRowHeaderView(null);
}
table.revalidate();
}
});
}
}
}
//来自于java核心技术 duoshan&2003.8.25
fpwang 2003-08-25
  • 打赏
  • 举报
回复
偷学

62,614

社区成员

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

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