2009-08-15 8 views
0

私はjTableが読み取り専用であり、選択は1行のみで行われるようにしました。jTableグリッド線の選択された行

ただし、ユーザーが行を選択して行を塗りつぶした場合、列間のjTableの垂直グリッド線が削除され、各セルの色のブロックではなく、水平の単一のブロックが発生します。

隣接する列の各セル間に垂直線が表示されるように、選択した行を取得するにはどうすればよいですか?

+0

方法はここで不足している行が円で囲まれて、私が何を意味するかを示す画像へのリンクのご

public Component getTableCellRendererComponent(...) 

に境界線を設定することを確認しなかった場合します。http:// WWWを。 algaia.co.uk/grid.jpg – Dave

+0

私の答えが更新されました。 –

答えて

0

myTable.setShowGrid(true),myTable.setShowVerticalLines(true)と呼ばれていますか?あなたのグリッドの色は何ですか?それは選択の背景色と同じになりますか?

アップデート:私は、行を選択したときに

from javax.swing import * 
from java.awt import * 
from javax.swing.table import DefaultTableModel, DefaultTableCellRenderer 

class MyTableModel(DefaultTableModel): 
    def isCellEditable(self, row, col): 
     return False 

class UnfocusableRenderer(DefaultTableCellRenderer): 
    def getTableCellRendererComponent(self, table, value, isSelected, hasFocus, row, col): 
     return DefaultTableCellRenderer.getTableCellRendererComponent(self, table, value, isSelected, False, row, col) 

if __name__ == '__main__': 
    frame = JFrame("Read-only JTable") 
    frame.setSize(400, 150) 
    frame.setLayout(BorderLayout()) 
    tableData = [ 
     ['', ''], 
     ['', ''], 
    ] 
    colNames = ('Title 1','Title 2') 
    dataModel = MyTableModel(tableData, colNames) 
    table = JTable(dataModel) 
    r = UnfocusableRenderer() 
    for colindex in (0, 1): 
     tc = table.columnModel.getColumn(colindex) 
     tc.cellRenderer = r 

    scrollPane = JScrollPane() 
    scrollPane.setPreferredSize(Dimension(370,106)) 
    scrollPane.getViewport().setView(table) 

    panel = JPanel() 
    panel.add(scrollPane) 
    panel.background = Color.blue.darker() 

    frame.add(panel, BorderLayout.CENTER) 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE) 
    frame.setVisible(True) 

これはスクリーンショットです:

alt text

として私は読み取り専用のテーブルを作成するには、次の簡単なJythonスクリプトを使用しましたこれはグリッドラインを表示しています。レンダラー、色、またはリソースと関係がありますか?

+0

はい、setShowgridとsetShowVerticalLinesの両方がtrueです。それらがなければ、私は列の間の垂直線を全く見ていないでしょう。 これらの垂直線を描画しないのは、選択された行だけです。 グリッドは白い背景、黒い線(ヘッダー行のために反転)、ハイライトの列はオレンジ色になっています。 (ここに示されている:http://www.algaia.co.uk/grid.jpg) 私は、私が垂直線を期待していたところを丸で囲んだ... – Dave

0

独自のcellrendererを実装しましたか?

あなたはまだ

関連する問題