2014-02-20 144 views
0

我創建了清單應用程序,當從數據庫中顯示事務列表時,我在JScrollPane中使用JTabel。將JScrollPane horizo​​ntalScrollBar策略設置爲AS_NEED和JTable setAutoResize爲false,並根據需要使用TableColumnModel設置列寬。當寬度設置手動表寬度超出視口和Horizo​​talScrollBar激活。但是我運行程序並使用滾動條查看視窗外的列,文本和標題文本在滾動期間變得模糊。 按照給定的代碼使用的DefaultTableModelJTable列標題模糊

DefaultTableModel 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); 

截圖的項目

SetTableModel的屏幕使用,拍攝Horizo​​tal滾動條 enter image description here之前

截圖的使用Horizo​​tal滾動條後 enter image description here

那麼,有沒有解決辦法,以避免模糊。

+2

張貼的代碼似乎確定。你可以發佈SSCCE嗎? – StanislavL

+1

這可能是相關的:[如何更改JTable標題高度? #不使用setXXXSize](http://stackoverflow.com/questions/11686535/how-to-change-jtable-header-height/11686731#11686731) – aterai

+1

[不要使用setXXSize,永遠](http:// stackoverflow的.com /一個/203657分之7229519) – kleopatra

回答

1

你的下一行的問題:

table1.getTableHeader().setPreferredSize(new Dimension(table1.getTableHeader().getPreferredSize().width, 35)); 

TableCellRenderer幫助你的頭的設置高度,例如:

DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer(); 
defaultRenderer.setPreferredSize(new Dimension(0,35));