2016-06-16 20 views
0

JTableをグリッドとして、セル間の線で表示しようとしています。私は個々のセル内に罫線を追加することしかできませんでした。完全なボーダーを追加すると、醜く間違って見える、切断されたボックスがたくさんあります。 MatteBorders(以下のコードのように)を使用すると少し上手く見えますが、境界線があまり出ないギャップが生じます。JTable内にBETWEENセルを追加する

public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { 
    Component stamp = super.prepareRenderer(renderer, row, column); 
    int top = 1; 
    int left = 1; 
    int bottom = row == 7 ? 1 : 0; //Grid is always 8x8, this ensures the bottom/right will have full borders. 
    int right = column == 7 ? 1 : 0; 
    MatteBorder border = new MatteBorder(top, left, bottom, right, Color.BLACK); 
    if (stamp instanceof JComponent) { 
     ((JComponent) stamp).setBorder(border); 
    } 
    return stamp; 
} 

私はちょうどセル要素間のグリッド線を取得するように、適切にこれを行うにはいくつかの方法がなければならないような気がします。私は何が欠けていますか?それ以外の場合は、MatteBorderがギャップを越えて伸びるようにする方法、または通常のボーダーをわずかにさらに押し込んで隣接するセルの境界線が重なるようにする方法がありますか?

EDIT:setShowGrid(true)とsetGridColor(Color.BLACK)を使用しています。

+2

のみ水平または垂直線を表示するsetShowHorizontalLines(boolean showHorizontalLines)setShowVerticalLines(boolean showVerticalLines)を使用するには、 'table.setShowGrid(真)試しましたか;'? – whiskeyspider

+0

@whiskeyspiderこれはうまくいきませんでしたが、もっと掘り下げて、理由を理解しました。個々のセルごとに同じ背景色にデフォルト設定していました。 + setGridColor()はそれを解決しました。ありがとうございます。 –

+0

デフォルトの動作では、セル間にグリッド線が表示されます。 [テーブルの使い方](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)のSwingチュートリアルのセクションを読んでください。 – camickr

答えて

2

使用JTable.setShowGrid(true)デフォルトの境界線を表示したり、

関連する問題