我有一個JTable顯示來自允許整數值0,1和2的模型的值。這些值顯示在9乘9的網格中(如數獨遊戲板)。根據模型值隱藏JTable中的單個單元
我的問題是:如何從GUI中隱藏零值?
也就是說,在模型值爲零的表單元格中,我不希望GUI顯示任何值。由於計算已完成,模型必須包含零值。
我試圖使用DefaultTableCellRenderer並通過使用setVisible(true)(如this question)將單元格組件設置爲不可見,但我沒有得到任何結果。
我設法使用DefaultTableCellRenderer切換任何單元格的背景顏色取決於模型的狀態(如果一個單元格被認爲是「否定的」)。 我確實想保持背景顏色可見。
我對Java有點新,所以也許這只是一個更新問題?
這是我的DefaultTableCellRenderer:
private static class GameTableRenderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
GameModel model = (GameModel) table.getModel();
if(model.isNegative(row, column))
c.setBackground(Color.lightGray);
else
c.setBackground(Color.white);
if(model.getAbsoluteValueAt(row, column) == 0)
c.setVisible(false);
else
c.setVisible(true);
return c;
}
}
的「getAbsoluteValueAt」方法返回一個整數0,1或2,背景顏色的變化工作完全正常。
我的模型擴展AbstractTableModel上,而JTable使用這樣的渲染:
table.setDefaultRenderer(int.class, renderer);
我希望這個信息就足以說明我的問題,我至今都擺在努力請索取更多信息我會提供它。
預先感謝您。 /弗雷德裏克
謝謝,完美!我會用這個解決方案! – 2013-03-03 15:50:33
+1幾乎得到了揮杆金徽章:) – 2013-03-03 15:54:15
您也可以返回一個新的空組件,例如JTextField – mdscruggs 2013-03-03 15:55:10