2012-04-02 3 views
1

verwenden Ich versuche, die Daten der ausgeblendeten Spalte als QuickInfo anzuzeigen. Hiding arbeitet perfekt mit dem folgenden Code:Wie verdeckte Spaltendaten von jTable in QuickInfo

JTable table = new JTable(model){ 
     //Implement table cell tool tips.   
     public String getToolTipText(MouseEvent e) { 
      String tip = null; 
      java.awt.Point p = e.getPoint(); 
      int rowIndex = rowAtPoint(p); 
      int colIndex = columnAtPoint(p); 
      int realColumnIndex = convertColumnIndexToModel(colIndex); 

      try { 
       tip = getValueAt(rowIndex, 8).toString(); 
      } catch (RuntimeException e1) { 
       //catch null pointer exception if mouse is over an empty line 
      } 

      return tip; 
     } 
    }; 

    TableColumnModel tcm = table.getColumnModel(); 

    TableColumn tc; 
    for(int i = 1; i <= 7; i++){ 
     tc = tcm.getColumn(8); 
     tcm.removeColumn(tc); 
    } 

Aber die Tooltip zeigt die Daten nicht von versteckter Spalte (getValue Funktion wird nicht Wert zurückgibt). Also die Spalte auch löschen die Daten löschen?

Antwort

5
  1. Sie brauchen nicht für Schleife, wie Sie die i Variable nicht verwenden ;-)
  2. Die removeColumn auf den JTable die Daten nicht aus dem Modell entfernen, wie dies deutlich in der javadoc angegeben

    Entfernt eine Spalte aus dem JTable-Spaltenarray. Hinweis: Diese Methode entfernt die Datenspalte nicht aus dem Modell. Es entfernt nur die TableColumn, die für die Anzeige verantwortlich war.

    Es gibt keine Erwähnung in der javadoc für die gleiche Methode auf den TableColumnModel, aber ich würde annehmen, dass es die gleiche Art und Weise funktioniert, aber man kann ihm immer einen Versuch gibt sie stattdessen

  3. auf den JTable anrufen

    das eigentliche Problem in Ihrem Code ist die Verwendung von getValueAt, die den Zeilen- und Spaltenindex der Tabelle verwendet, und nicht von dem Modell

    Hinweis: die Spalte in der Anzeigereihenfolge der angegeben ist Tabellenansicht, und nicht in der Spaltenreihenfolge des TableModel. Dies ist ein wichtiger Unterschied, da die Spalte bei einem bestimmten Index in der Ansicht geändert wird, wenn der Benutzer die Spalten in der Tabelle neu anordnet. In der Zwischenzeit beeinflussen die Aktionen des Benutzers niemals die Spaltenreihenfolge des Modells.

    Und da Sie diese Spalte entfernt haben, existiert sie einfach nicht für die Tabelle. Rufen Sie stattdessen die Methode getValue für das Modell auf, und vergessen Sie nicht, die row index

zu konvertieren