2013-10-22 39 views
4

我有一個JTable的JFrame。在某個特定的JTable中,只要選擇了JFrame,就需要選擇JFrame中單元格的位置(通過代碼完成選擇)。我想在Glass Pane上畫一些東西。我怎樣才能做到這一點?獲取選定的JTable單元的位置?

Point p = gui.rerouteTable.getLocation(); 
SwingUtilities.convertPointToScreen(p,gui.rerouteTable); 

我認爲這可以讓我在桌子的左上角。通過Cell Height和SelectionListener,我可以分割我需要的位置。但我甚至無法獲得桌子左上角的優勢。爲什麼不? gui.rerouteTable.getLocation()返回(0,0)顯然convertPointToScreen工作不正常。

+0

重複:http://stackoverflow.com/questions/14416188/jtable-how-to-get-選中單元格 –

+0

@SilviuBurcea這是一個不同的問題。這個問題是關於框架中的位置,而不是選擇什麼。 – jzd

回答

10

使用的JTable的方法

public Rectangle getCellRect(int row, int column, boolean includeSpacing) 
+0

這會返回表本身或整個窗口中的位置嗎? –

+0

@HansEn我不知道,但檢查出來,如果它是相對於表格,相對於窗口添加表格偏移量。 –

+0

在表中。您可以使用SwingUtilitites – StanislavL

1

如果你不需要其他理由玻璃嵌板,還考慮使用的isSelected值來調節渲染器的外觀custom cell renderer

附加:每次爲特定單元格調用TableCellRenderer時,名爲value的參數是對從該單元格的模型獲得的Object的引用。

+0

謝謝。我已經實現了一個渲染器。但我確實需要玻璃窗格。 –

+0

好的;這裏是使用'getCellRect()'的[示例](http://stackoverflow.com/a/14429388/230513)。 – trashgod

+0

但我確實需要玻璃窗格--->也許你會需要JTables單元佈局JLabel,沒人知道 – mKorbel

0

有了這個代碼,你可以得到一個細胞的X和Y座標表:

private void jtTableMouseClicked(java.awt.event.MouseEvent evt) {          
    int x = jtTable.getSelectedRow(); 
    int y = jtTable.getSelectedColumn(); 
}