我创建了库存应用程序,当从数据库显示事务列表时我在JScrollPane中使用JTabel。将JScrollPane horizontalScrollBar Policy设置为AS_NEED,将JTable setAutoResize设置为false,并根据需要使用TableColumnModel设置列宽。当Width设置手动表格宽度超出视口和HorizotalScrollBar激活时。但我运行程序并使用滚动条查看视口外的列,文本和标题文本在滚动期间变得模糊。 按照给定的代码进行项目的屏幕截图
使用DefaultTableModel
的SetTableModelDefaultTableModel dm;
dm = new DefaultTableModel(0, 0){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
String titleCol[] = new String[]{"ID","Invoice No","Date","Account Name","Total Amount","Taxeble Amount","Tax %","Tax Amount","Discount Amount","Grand Total"};
dm.setColumnIdentifiers(titleCol);
table1.setModel(dm);
table1.getTableHeader().setFont(new Font("Tahoma", Font.BOLD, 14));
使用TableColumnModel
设置列的宽度table1.getTableHeader().setPreferredSize(new Dimension(table1.getTableHeader().getPreferredSize().width, 35));
TableColumnModel columnModel = table1.getColumnModel();
columnModel.getColumn(0).setMinWidth(50);
columnModel.getColumn(0).setMaxWidth(50);
columnModel.getColumn(1).setMinWidth(85);
columnModel.getColumn(1).setMaxWidth(85);
columnModel.getColumn(2).setMinWidth(100);
columnModel.getColumn(2).setMaxWidth(100);
columnModel.getColumn(3).setMinWidth(250);
columnModel.getColumn(4).setMinWidth(100);
columnModel.getColumn(4).setMaxWidth(100);
columnModel.getColumn(5).setMinWidth(130);
columnModel.getColumn(5).setMaxWidth(130);
columnModel.getColumn(6).setMinWidth(75);
columnModel.getColumn(6).setMaxWidth(75);
columnModel.getColumn(7).setMinWidth(130);
columnModel.getColumn(7).setMaxWidth(130);
columnModel.getColumn(8).setMinWidth(130);
columnModel.getColumn(8).setMaxWidth(130);
columnModel.getColumn(9).setMinWidth(130);
columnModel.getColumn(9).setMaxWidth(130);
使用Horizotal ScrollBar之前的屏幕截图
使用Horizotal ScrollBar后的屏幕截图
那么是否有任何解决方案可以避免模糊。
答案 0 :(得分:1)
下一行你的问题:
table1.getTableHeader().setPreferredSize(new Dimension(table1.getTableHeader().getPreferredSize().width, 35));
借助TableCellRenderer
设置标题的高度,例如:
DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer();
defaultRenderer.setPreferredSize(new Dimension(0,35));