2017-02-23 2 views
0

Ich möchte eine JTable erstellen, die die Rahmenfarbe der äußeren hervorgehobenen Zellen auf Knopfdruck ändern kann.Java Swing JTable Wechselzelle Border

ich bereits herausgefunden, wie die Schaltfläche machen und die Informationen für die Zellen erhalten, die wie folgt geändert werden müssen:

 frame.add(new JButton(new AbstractAction("Create Border "){ 

     private static final long serialVersionUID = 1L; 

     private void createBorder(){ 
      System.out.println(table.getSelectedColumn()); 
      System.out.println(table.getSelectedRow()); 
      System.out.println(table.getSelectedRowCount()); 
      System.out.println(table.getSelectedColumnCount()); 
      System.out.println(table.getSelectedRows()[0]); 
      System.out.println(table.getSelectedColumns());    

     } 

     @Override 
     public void actionPerformed(ActionEvent e){ 
      createBorder(); 
     } 

    }), BorderLayout.SOUTH); 
    frame.pack(); 
    frame.setLocation(150,150); 
    frame.setVisible(true); 

} 

was jetzt irgendwie übrig bleibt, ist, die einzelnen Zellen zu erhalten und ihre Grenze zu ändern.

Bis jetzt habe ich nur Lösungen gefunden, um den Rand bei der Erstellung der Tabelle durch den Renderer zu ändern.

+0

* "Ich habe nur Lösungen gefunden, um den Rahmen bei der Erstellung der Tabelle durch den Renderer zu ändern." * Der Renderer kann die Darstellung von Zellen nicht nur nach Zeile, Spalte, Wert, ** Auswahl ändern ** , Fokus usw., aber der Wert aller Attribute, auf die er Zugriff hat. Wenn also der Renderer als innere Klasse von 'GUI' deklariert ist und' GUI' ein boolesches Attribut hat (z. B. 'makeBigBorder'), kann der Renderer das Rendering abhängig davon ändern, ob' makeBigBorder' wahr oder falsch ist. –

Antwort

1

Ich fand nur Lösungen zum Ändern der Grenze bei der Erstellung der Tabelle durch den Renderer.

könnte Ein weiterer Ansatz, die prepareRenderer(...) Methode des JTable zu überschreiben, so dass Sie nicht eine benutzerdefinierte Renderer für jede Art von Daten erstellen müssen.

Überprüfen Sie Table Row Rendering für einige Beispiele dieses Ansatzes. Ein Beispiel zeigt, wie Sie statt jeder Zelle einen Rahmen um die gesamte Zeile platzieren.