62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import java.lang.Math;
public class FixedTable
{
public static void main(String args[])
{
int i,j;
int rowNum=200;
int colNum=201;
final Object[][] rowData = new Object[rowNum][colNum];
for(i=0;i<rowNum;i++)
{
rowData[i][0]=String.valueOf(i+1);
for(j=1;j<colNum;j++)
{
rowData[i][j]=(int)(100*Math.random());
}
}
final String[] columnNames = new String[colNum];
columnNames[0]=" ";
for (j = 1; j < columnNames.length; j++)
{
columnNames[j] = String.valueOf(j);
}
TableModel fixedColumnModel = new AbstractTableModel()
{
public int getColumnCount()
{
return 1;
}
public String getColumnName(int column)
{
return columnNames[column];
}
public int getRowCount()
{
return rowData.length;
}
public Object getValueAt(int row, int column)
{
return rowData[row][column];
}
};
TableModel mainModel = new AbstractTableModel()
{
public int getColumnCount()
{
return columnNames.length - 1;
}
public String getColumnName(int column)
{
return columnNames[column + 1];
}
public int getRowCount()
{
return rowData.length;
}
public Object getValueAt(int row, int column)
{
return rowData[row][column + 1];
}
};
JTable fixedTable = new JTable(fixedColumnModel);
fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(j = 0; j < columnNames.length; j++)
{
fixedTable.getColumnModel().getColumn(j).setPreferredWidth(30);
}
JTable mainTable = new JTable(mainModel);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
ListSelectionModel model = fixedTable.getSelectionModel();
mainTable.setSelectionModel(model);
JScrollPane scrollPane = new JScrollPane(mainTable);
Dimension fixedSize = fixedTable.getPreferredSize();
JViewport viewport = new JViewport();
viewport.setView(fixedTable);
viewport.setPreferredSize(fixedSize);
viewport.setMaximumSize(fixedSize);
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedTable.getTableHeader());
scrollPane.setRowHeaderView(viewport);
JFrame frame = new JFrame("Fixed Column Table");
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(800, 750);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}