Icon in JTable abbilden

xadoX

Aktives Mitglied
Ich hab mehrere Icons in Paketen gespeichert.
Die Pakete lauten u.A.

resource.img.tango.16x16.actions
resource.img.tango.16x16.animations
...
resource.img.tango.22x22.actions
resource.img.tango.22x22.animations
...
resource.img.tango.32x32.actions
resource.img.tango.32x32.animations
...

Einer existierende JTable jt soll jetzt in die linke spalte ein beliebiges Icon aus den obigen Paketen hinzugefügt werden können.

Folgender Code führt zu einer NullPointerException

Code:
jt.setValueAt(new ImageIcon(getClass().getResource("dialog-error.png")), 0, 0);

Was mach ich falsch?
 

Michael...

Top Contributor
Folgender Code führt zu einer NullPointerException

Code:
jt.setValueAt(new ImageIcon(getClass().getResource("dialog-error.png")), 0, 0);

Was mach ich falsch?
Wo ist die Angabe des Packages? Oben steht immer etwas von resource.img.tango...
Müsste dann wohl eher so ungefähr aussehen:
Java:
getResource("/resource/img/tango/dialog-error.png")
 

xadoX

Aktives Mitglied
Das ist wohl richtig. Die NullPointerException ist jetzt weg. Code sieht jetzt wie folgt aus.

Code:
URL pic_url = this.getClass().getClassLoader().getResource("resource/img/tango/16x16/status/dialog-error.png");
              ImageIcon ii = new ImageIcon(pic_url);
              jTableStatusBericht.setValueAt(ii, zaehler, 0);

Allerdings schreibt er in die Zelle jetzt folgendes:
"file:/C:/Users/.../build/classes/resource/img/tango/16x16/status/dialog-error.png"

Das Icon wird leider nicht dargestellt.
 

xadoX

Aktives Mitglied
Dort steht

Ein Blick in den Quellcode von JTable verrät, dass Number, Float, Double, Date, Icon, ImageIcon und Boolean eine Spezialbehandlung erhalten.

Dann sollte die Tabelle beim Aufruf von setValueAt doch auch das ImageIcon als solches erkennen und keinen String daraus machen.
 

xadoX

Aktives Mitglied
Habs jetzt wie folgt gelöst:

Den DefaultTableCellRenderer erweitert und die Methode setValue überschrieben.

Code:
class KeyIconCellRenderer extends DefaultTableCellRenderer {
    public KeyIconCellRenderer() {
        URL pic_url = this.getClass().getClassLoader().getResource("resource/img/tango/16x16/status/dialog-error.png");
        ImageIcon ii = new ImageIcon(pic_url);
        setIcon(ii);
    }
    @Override
    public void setValue(Object value) {
        if (value instanceof Icon) {
            setIcon((Icon) value);
        } else {
            setIcon(null);
            super.setValue(value);
        }
    }

Dann in der Gui der Tabelle den neuen Renderer zugewiesen:

Code:
jTableStatusBericht.setDefaultRenderer(Object.class, new KeyIconCellRenderer());

Danach kann man mit setValueAt ein Icon in eine bestimmte Zelle schreiben

Code:
pic_url = this.getClass().getClassLoader().getResource("resource/img/tango/16x16/status/haken.png");
        haken = new ImageIcon(pic_url);
jTableStatusBericht.setValueAt(haken, 5, 10);
 

xadoX

Aktives Mitglied
Jetzt gibts noch ein kleines weiteres Problem. Ich rufe nacheinander zwei Funktionen auf.
Code:
verwaltung.getCategories();
verwaltung.getCategories2CS();

in der ersten Funktionen wird

jTableStatusBericht.setValueAt(haken, 0, 0);

aufgerufen und in der zweiten dann

jTableStatusBericht.setValueAt(haken, 1, 0);

Jetzt werden die Haken erst gezeichnet, sobald die zweite Funktion beendet ist.
Wünschenswert ist es aber, dass der 1. Haken bereits gesetzt wird, wenn die erste Funktion beendet ist
und der zweite dann sobald die zweite Funktion terminiert.

Gibts dazu ne Lösung?
 

André Uhres

Top Contributor
Hallo xadoX,

versuch's mal so:

Java:
verwaltung.getCategories();
SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
        verwaltung.getCategories2CS();
    }
});

Gruß,
André
 

xadoX

Aktives Mitglied
Ja, das klappt sehr gut.
Was wenn noch weitere Funktionen aufgerufen werden? Z.b. verwaltung.getCategoriesData() und verwaltung.getCategoriesCSData();

Müsste dann für jede dieser Funktionen ein asynchroner Thread (invokeLater erzeugt doch einen asynchronen Thread oder?) erzeugen?

Also so?
Code:
verwaltung.getCategories();
SwingUtilities.invokeLater(new Runnable() {
   @Override
    public void run() {
        verwaltung.getCategories2CS();
    }
});
SwingUtilities.invokeLater(new Runnable() {
   @Override
    public void run() {
        verwaltung.getCategoriesData() ;
    }
});
SwingUtilities.invokeLater(new Runnable() {
   @Override
    public void run() {
        verwaltung.getCategoriesCSData();
    }
});

Es kann gut sein das noch weitere Funktionen aufgerufen werden müssen. Gibt es da vielleicht eine kürzere Variante?

EDIT: so wie ich es jetzt implementiert hab geht es nicht. Also man kann wohl nicht mehrmals
SwingUtilities.invokeLater(new Runnable() {...}
aufrufen. Wie ist es anders möglich?
 
Zuletzt bearbeitet:

xadoX

Aktives Mitglied
Habs jetzt so gelöst, dass ich in der jeweiligen run() Methode nochmals invokeLater aufgerufen hab.

Code:
verwaltung.getCategories();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                verwaltung.getCategories2CS();
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {                
                        verwaltung.getAttributesCS();
                        SwingUtilities.invokeLater(new Runnable() {
                            @Override
                            public void run() {            
                                verwaltung.getAttributesXLS();
                            }
                        });
                    }
                });
            }
        });

Das geht aber doch bestimmt eleganter oder?!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L toggel icon in jtable AWT, Swing, JavaFX & SWT 3
R JTable mit Column die Icon und Integer enthält? AWT, Swing, JavaFX & SWT 3
A Swing JTable Icon nur in einer Zelle AWT, Swing, JavaFX & SWT 2
R JTable Header - will links kleines icon hinzufuegen..? AWT, Swing, JavaFX & SWT 6
G Icon und Text in JTable darstellen AWT, Swing, JavaFX & SWT 3
G Icon in JTable AWT, Swing, JavaFX & SWT 9
S JTable - Einzelnes Icon AWT, Swing, JavaFX & SWT 4
K JTable Renderer - Probs mit Icon AWT, Swing, JavaFX & SWT 3
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
krgewb Swing Icon von Button AWT, Swing, JavaFX & SWT 12
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
U AWT Smoother Icon AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D Icon in Menuitem einfügen AWT, Swing, JavaFX & SWT 8
C Icon in der Spaltenüberschrift AWT, Swing, JavaFX & SWT 1
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
C JavaFX Application -Icon wird falsch dargestellt AWT, Swing, JavaFX & SWT 7
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
D JavaFX - MenuItem mit Icon AWT, Swing, JavaFX & SWT 1
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
H Javafx - Menuitem - Icon AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
B Windowbuilder - Icon für Button einbinden AWT, Swing, JavaFX & SWT 2
B Icon AWT, Swing, JavaFX & SWT 5
E Swing JFrame Icon AWT, Swing, JavaFX & SWT 3
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
J Icon vor Button AWT, Swing, JavaFX & SWT 7
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
S Würfelanimation icon updaten AWT, Swing, JavaFX & SWT 8
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
M Swing DoubleBuffer mit Icon AWT, Swing, JavaFX & SWT 3
TiME-SPLiNTER JLabel mit Icon & JFrame Resize AWT, Swing, JavaFX & SWT 5
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
M Icon wird bei externen Jar nicht angezeigt AWT, Swing, JavaFX & SWT 2
kodela Swing Icon in der Titelleiste "festnageln" AWT, Swing, JavaFX & SWT 6
G JLabel Icon Pfeilform AWT, Swing, JavaFX & SWT 14
S JCheckBoxMenuItem - Haekchen verschwindet bei Icon AWT, Swing, JavaFX & SWT 3
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
algorismi JInternalframe Icon AWT, Swing, JavaFX & SWT 14
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Icon für Fenster AWT, Swing, JavaFX & SWT 5
M Prozess-Icon im Prozessmanager AWT, Swing, JavaFX & SWT 8
W Swing Button mit Icon AWT, Swing, JavaFX & SWT 3
S svg Icon für Button (Batik Problem?) AWT, Swing, JavaFX & SWT 3
C Swing JToggleButton und Icon AWT, Swing, JavaFX & SWT 2
S JTree - Knoten mit animiertem GIF/Icon AWT, Swing, JavaFX & SWT 5
S vector Icon AWT, Swing, JavaFX & SWT 3
C LayoutManager Icon Einfügen? AWT, Swing, JavaFX & SWT 6
N Icon für Button wird nicht gefunden AWT, Swing, JavaFX & SWT 11
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
F Problem beim Positionieren von Icon und Text in Button AWT, Swing, JavaFX & SWT 2
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
J Icon einer JCheckBox AWT, Swing, JavaFX & SWT 6
D Swing Anwenungs Icon AWT, Swing, JavaFX & SWT 8
J Swing JToolBar Button mit Icon AWT, Swing, JavaFX & SWT 4
V [Swing] Overlay Icon AWT, Swing, JavaFX & SWT 5
K Schachbrett / Icon / JButton AWT, Swing, JavaFX & SWT 7
T Abbrechen-Icon entfernen AWT, Swing, JavaFX & SWT 4
S Buttons mit großen Icon AWT, Swing, JavaFX & SWT 7
klattiator Icon und Button zum Schließen in einem Tab AWT, Swing, JavaFX & SWT 3
G Sehr kleine JButtons mit Icon oder Beschriftung AWT, Swing, JavaFX & SWT 2
G Icon ans Ende einer JToolbar AWT, Swing, JavaFX & SWT 7
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
G JFrame Icon ändern AWT, Swing, JavaFX & SWT 5
S Eclipse Icon Set AWT, Swing, JavaFX & SWT 6
S Jtree-Icon per Klick auf JBUTTON ändern AWT, Swing, JavaFX & SWT 3
A Icon,zentriert,Farbiger Text alles in einer Tabelle/Spalte ? AWT, Swing, JavaFX & SWT 4
L icon auf Label AWT, Swing, JavaFX & SWT 4
K Icon und Text auf JButton anordnen AWT, Swing, JavaFX & SWT 2
D Icon in MenuItem AWT, Swing, JavaFX & SWT 3
B jtree root icon ändern AWT, Swing, JavaFX & SWT 1
H Java Jar Icon AWT, Swing, JavaFX & SWT 12
K SystemTray-Icon im Prozesslauf ändern AWT, Swing, JavaFX & SWT 2
P [JTree] Icon für Nodes und Leafs ändern bzw. löschen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben