Fügen Sie ein Bild oder Symbol in JTable hinzu
Die JTable-Klasse bietet eine Methode zum Einfügen von Symbolen oder Bildern. JTable muss den Typ der in der Tabellenspalte gespeicherten Objekte angeben, damit es das entsprechende Rendering auswählen kann. Dies geschieht durch Aufruf der Methode getColumnClass(...):public Class getColumnClass(int column)Java bestimmt, ob Sie einen Renderer von JTable angegeben haben oder nicht, andernfalls ruft JTable das Template auf und ruft das getColumnClass() wodurch der Zellentyp in der ersten Zeile abgerufen wird. Anschließend wird sie mit einer Liste von Datentypen verglichen, in denen die Ausgabeformate gespeichert sind. Diese Liste wird von JTable initiiert, aber Sie können sie hinzufügen oder bearbeiten. Zu den Renderings gehören ImageIcon und Icon.
{
return getValueAt(0, column).getClass();
}
Das folgende Beispiel zeigt, wie Bilder zu einer Spalte hinzugefügt werden:
import javax.swing.*;Ergebnis nach der Ausführung:
import javax.swing.table.*;
public class Table_image erweitert JFrame
{
public Table_image()
{
ImageIcon icon1 = new ImageIcon("1.png");
ImageIcon icon2 = new ImageIcon("2.png");
ImageIcon icon3 = new ImageIcon("3.png");
ImageIcon icon4 = new ImageIcon("4.png");
string[] title = {"Betriebssystem", "Beliebtheit"};
Objekt[][] data =
{
{icon1, "Android: 76.6%"},
{icon2, "IOS: 19.7%"},
{icon3, "Windows Phone: 2.8%"},
{icon4, "BlackBerry OS: 1%"},
};
DefaultTableModel template = new DefaultTableModel(data, Title);
JTable table = new JTable( template )
{
/*automatische Erkennung von Datentypen
*aller Spalten
*/
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
};
//Zeilenhöhe ändern
table.setRowHeight(100);
JScrollPane scrollPane = new JScrollPane( table);
getContentPane().add( scrollPane );
}
public static void main(String[] args)
{
Table_image frame = new Table_image();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
Wenn Sie die getColumnClass enthält die Spalte Text (Dateiname) und keine Bilder. Anstatt beispielsweise das Android-Logo einzufügen, zeigt JTable "1.png" an.
Wenn Sie Ihre eigene Vorlage verwenden, die von AbstractTableModel, vergessen Sie nicht, die getColumnClass im Modell class.
class Model erweitert AbstractTableModel{Lesen Sie mehr über Editoren und Renderer auf der offiziellen Java-Website: Editoren und Renderer.
private Object[][]-Daten;
privater String[]-Titel;
public Model(Object[][] data, String[] title){
this.data = data;
this.title = Titel;
}
public Klasse getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
public int getColumnCount() {
return this.title.length;
}
public int getRowCount() {
return this.data.length;
}
public Objekt getValueAt(int row, int col) {
return this.data[row][col];
}
}