2012-04-18 12 views
1

私はスペーシングを知っていますJTable以下に示すように、セルはかなり単純です。Spacing JTable header

int gapWidth = 10; 
int gapHeight = 5; 
table.setIntercellSpacing(new Dimension(gapWidth, gapHeight)); 

このようなスペースは、表のヘッダーには影響しないようです。ヘッダーを同じディメンションで配置する方法はありますか?のみに配置された間隔の結果として -

+0

から、それはあなたが(ヘッダーの_alignmentと後にあるまさに明確ではありません実際の行セルの値は軽くオフに見える_ - わずかにだけではなく、ヘッダーが中央に配置されています:-) SSCCEに問題を示すのに最適です(@mKorbelは既に提案しています) – kleopatra

+0

私は@mKorbelとまったく同じことをやっています。私のコードの唯一の違いは、私は2つの列のサイズを決めています。 – Bitmap

+0

しかし、彼の例ではテキストはありません(それはあなたの後ろにありますか?)整列(ヘッダー/セル間)です。 – kleopatra

答えて

1

最も簡単な方法は、上記のコードは私の間隔を行い、しかしヘッダのアライメントと実際の行のセルの値がslighlyオフ見えるTableCellRenderer

内部EmptyBorders to the JTableHeaderを設定することができヘッダーではありません。

私はSSCCE追加(3minsの27seconds株式会社を。ここにアップロード)

enter image description hereenter image description here

コード

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class IntercellSpacingTableHeader { 

    private JFrame frame = new JFrame("Table Demo"); 
    private String[] columnNames = {"String", "Integer", "Float", "Double"}; 
    private Object[][] data = { 
     {"aaa", new Integer(12), new Float(12.15), new Double(100.05)}, 
     {"bbb", new Integer(5), new Float(7.154), new Double(6.1555)}, 
     {"CCC", new Integer(92), new Float(0.1135), new Double(3.1455)}, 
     {"ddd", new Integer(12), new Float(31.15), new Double(10.05)}, 
     {"eee", new Integer(5), new Float(5.154), new Double(16.1555)}, 
     {"fff", new Integer(92), new Float(4.1135), new Double(31.1455)}}; 
    private TableModel model = new DefaultTableModel(data, columnNames) { 

     private static final long serialVersionUID = 1L; 

     @Override 
     public Class<?> getColumnClass(int column) { 
      return getValueAt(0, column).getClass(); 
     } 
    }; 
    private JTable table = new JTable(model); 

    public IntercellSpacingTableHeader() { 
     int gapWidth = 10; 
     int gapHeight = 5; 
     table.setIntercellSpacing(new Dimension(gapWidth, gapHeight)); 
     table.setRowHeight(20); 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     JScrollPane scroll = new JScrollPane(table); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(scroll); 
     frame.pack(); 
     frame.setLocation(150, 150); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new IntercellSpacingTableHeader(); 
      } 
     }); 
    } 
} 
+0

私はそれを試みましたが、ここでの要求は、 – Bitmap

+1

@Bitmap私はそれに問題はありませんが、別の問題があるかもしれません。リンクされたコードを使って[SSCCE](http://sscce.org/)、多分誰かを作ることができます。 .. – mKorbel

+0

上記のコードではスペーシングが行われますが、ヘッダーと実際の行セルの値のアライメントは、スローで見えます。 – Bitmap