![](/img/trans.png)
[英]Java Swing: How can I get the previous value and the current value when editing a cell in JTable?
[英]How can i get the displayed cell value in a JTable (not full TableModel value)?
通常,我使用以下方法在JTable
獲取表單元格的值:
table.getModel().getValueAt(rowIndex, columnIndex)
但是,現在我有了給定的輸入JTable
(我無法控制或創建),並且需要獲取顯示的單元格值作為String
。 如果值為Double
,則它的位數可以超過JTable
所顯示的位數。
示例: JTable
顯示0.37(兩位數字)-但是getValueAt
返回0.37234421
我正在尋找的是要么以String
形式獲取顯示的值 ,要么是顯示的位數(因此我可以從getValueAt
相應地更改double()。
蠻力法是
Object value = jtable.getValueAt(row, column);
Component component = jtable.getCellRenderer(row, column).getTableCellRendererComponent(jtable, value, isSelected, hasFocus, row, column);
if (component instanceof JLabel) {
String displayedValue = ((JLabel) component).getText(); // here you are
}
注意 ,可以通過調用例如jtable.setDefaultRenderer(columnClass, renderer)
來替換JTable
的CellRenderer
。 然后,根據實現的不同,生成的Component
可能不再是JLabel
。 在后一種情況下,需要不同的邏輯來檢索顯示的值(即,將component
為不同的Class並從該實例中檢索它)。 但是 ,默認情況下,由JTable
使用的DefaultTableCellRenderer
實現返回JLabel
。
但是 ,您看到的值也可能與此不同....如果表中的列在表中不夠寬,則文本23.4567
可能是文本,但實際顯示的文本是23.4...
...如果您想知道實際顯示的價值,需要使用其他方法...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.