📄 frozencolumnheader.java
字号:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class FrozenColumnHeader extends JScrollPane {
protected JTable mainTable;
protected JTable headerTable;
protected int columnCount;
public FrozenColumnHeader(JTable table, int columns) {
super();
mainTable = table;
headerTable = new JTable(mainTable.getModel());
getViewport().setView(headerTable);
columnCount = columns;
}
public void addNotify() {
TableColumn column;
super.addNotify();
TableColumnModel mainModel = mainTable.getColumnModel();
TableColumnModel headerModel = new DefaultTableColumnModel();
int frozenWidth = 0;
for (int i = 0; i < columnCount; i++) {
column = mainModel.getColumn(0);
mainModel.removeColumn(column);
headerModel.addColumn(column);
frozenWidth += column.getPreferredWidth() + headerModel.getColumnMargin();
}
headerTable.setColumnModel(headerModel);
Component columnHeader = getColumnHeader().getView();
getColumnHeader().setView(null);
JScrollPane mainScrollPane = (JScrollPane)SwingUtilities.getAncestorOfClass(
JScrollPane.class, mainTable);
mainScrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, columnHeader);
headerTable.setPreferredScrollableViewportSize(
new Dimension(frozenWidth, 0));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -