Wie erstellt man mehrer JButtons in einer Spalte einer JTable?
ButtonsInColumn.java
5.5 KB
Jede Zelle einer JTable hat einen Editor und einen Renderer. Der erste dient zum Bearbeiten des Objektes, der zweite zum Anzeigen von Objekten.
Möchte man nun einen oder mehrere Buttons darstellen, muss man zwei verschieden JButtons verwenden, für den Editor und für den Renderer. Das ist etwas verwirrend am Beginn.
Um die Sache zu erleichtern, gibt es hier eine Klasse
ButtonsInColumn.java
5.5 KB
, mit der beliebig viele Buttons in einer Spalte dargestellt werden können. Und so sieht es dann als Beispiel aus
Zu verwenden ist die Klasse wie folgt.
Verwendet wird eine Dummy Klasse, um die Renderer zuzuordnen
[highlight=java]//Dummy Class für Identifikation
private class Aktionen{} [/highlight]
Im Model der Tabelle kann man
[highlight=java]JButton btn1 = new JButton();
btn1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/add.png")));
btn1.setPreferredSize(new java.awt.Dimension( 25));
JButton btn2 = new JButton();
btn2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/cancel.png")));
btn2.setPreferredSize(new java.awt.Dimension( 25));
ButtonsInColumn btnCol = new ButtonsInColumn(this, new JButton[]{btn1, btn2}, new Action[] {delete1, delete}, 4);
this.setDefaultRenderer(Aktionen.class, btnCol);
this.setDefaultEditor(Aktionen.class, btnCol);[/highlight]
Und die Actions werden ebenfalls definiert (hier nur als Bsp. eine)
[highlight=java]Action delete1 = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e){
System.out.println("Ich bin Button 1");
}
}; [/highlight]