Wieso funktionert der CellRenderer nicht?

coree

Mitglied
Hallo,
ich möchte in die erste Spalten meiner Tabelle immer ein Icon haben. Habe gelesen, dass dies mittels eines CellRenderes geht.

Hier ist nun mein Versuch das Ganze zu realisieren:

Java:
    public JTable createFriendsTree() {
        DBManager dbManager = new DBManager();
        Vector colNames = new Vector();
        colNames.add("");
        colNames.add("Freundesliste");
        colNames.add("1");
        Vector rowData = new Vector();
        Vector curRow = new Vector();
        try {
            ResultSet friend = dbManager.selectFromDB("SELECT name "
                    + "FROM MusicBuddies.Friend");
            while (friend.next()) {
                curRow.add(new ImageIcon(getClass()
                .getResource("images/user.jpg")));
                curRow.add(friend.getString(1).replaceAll("@ap@", "'"));
                curRow.add("1");
                rowData.add(curRow);
            }
        } catch (Exception ex) {
            ErrorHandling.error("Friendlist", "createFriendsTree",
                    1, "Fehler: Keine Freundesliste vorhanden.", ex);

        }
        JTable table = new JTable(rowData, colNames);
        table.setRowHeight(18);
        table.setShowHorizontalLines(false);
        table.setIntercellSpacing(new Dimension(0, 0));
        table.setShowVerticalLines(false);
        table.getColumn("").setCellRenderer(new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(
                JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
                    JLabel label =
                            (JLabel) super.getTableCellRendererComponent(
                            table, value, isSelected, hasFocus, row, column);
                    if (value != null) {
                        label.setText("");
                        label.setIcon((ImageIcon) value);
                    }
                    return label;
                }
        });

        return table;
    }
Habe mich dabei hieran orientiert: JTable

Doch funktioniert das nicht so, wie ich es versuche (Ich bekomme immer eine NullPointerException, da mir aber nicht angezeigt wird in welcher Zeile der ist, kann ich dies nicht genau sagen. aber ich nehm mal an es hat mit dem bild zu tun).

hoffe jemand kann licht ins dunkel bringen und mir weiterhelfen. danke schonmal


EDIT: Habs nun gelöst:
Java:
public class LabelRenderer extends JLabel implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
          boolean isSelected, boolean hasFocus, int row, int column) {

        setIcon(createImageIcon("../gui/images/user.jpg", ""));
        setText(value.toString());
        return this;
    }
    
    /**
     * ...
     * @param path Strubg
     * @param description String
     * @return ...
     */
    protected static ImageIcon createImageIcon(String path, String description) {
        java.net.URL imgURL = LabelRenderer.class.getResource(path);
        if (imgURL != null) {
              return new ImageIcon(imgURL, description);
        } else {
              System.err.println("Couldn't find file: " + path);
              return null;
        }
    }
}
+
Java:
        table.getColumn("Icon").setCellRenderer(new LabelRenderer());
 
Zuletzt bearbeitet:

coree

Mitglied
Ich öffne nochmal meinen Thread, da meine nächste Frage auf dem Code der vorherigen aufbaut. und zwar geht es um folgendes.

Meine Tabelle sieht im Allgemeinen so aus:
Icon | UserName

Nun möchte ich, dass sich das Icon ändert, wenn etwas mit dem User passiert (in diesem Fall er online kommt). Ergo müsste ich die Icons zeilenweise je nach Status des Users ändern. Wie realisier ich das am Besten? Den CellRenderer von zuvor kann ich doch dafür schon weiter verwenden, nur muss der wohl noch erweitert werden oder kann ich einfach so aus meiner online-Prüf-Methode Bilder für einzelne Zeilen ändern?
 

Eldorado

Bekanntes Mitglied
Ich habe mir jetzt nur deinen letzten Post angeschaut, würde aber so ins blau sagen, dass das mehr mit dem Model als mit dem Renderer zusammenhängt. Du setzt ja ein anderes Bild und das ist ja die Datenebene und nicht die Darstellungsebene. Hoffe es hilft dir.
mfg
Eldorado
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
J JavaFX CSS einbinden - Wieso will das einfach nicht!!! AWT, Swing, JavaFX & SWT 1
LexeB4F setValueAT geht nicht... wieso? AWT, Swing, JavaFX & SWT 14
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
C Wieso nur erster Buchstabe bei Caesar-Entschlüsselung? AWT, Swing, JavaFX & SWT 2
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
K LayoutManager Wieso verschwinden Elemente? AWT, Swing, JavaFX & SWT 20
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
propra Wieso wird paintComponent() beim Start 2 malausgeführt? AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Wieso wird das Bild nicht angezeigt ? AWT, Swing, JavaFX & SWT 4
T wieso leere Oberfläche? AWT, Swing, JavaFX & SWT 5
G Swing Wieso braucht man nach setVisible mal ein revalidate und mal nicht? AWT, Swing, JavaFX & SWT 8
L Wieso werden die Icons nicht dargestellt? AWT, Swing, JavaFX & SWT 2
W Wieso SerialVersionUID bei Swing-Komponenten AWT, Swing, JavaFX & SWT 5
N Freiraum in der GUI - Wieso? AWT, Swing, JavaFX & SWT 6
S Wieso Fenster im EDT sichtbar machen? AWT, Swing, JavaFX & SWT 43
M Wieso geht das nicht! AWT, Swing, JavaFX & SWT 3
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
G Wieso wird meine Scrollbar nicht angezeigt? AWT, Swing, JavaFX & SWT 3
K JTable - wieso funktioniert der Autoscroll nicht? AWT, Swing, JavaFX & SWT 5
Paule JFrame bleibt leer, wieso? AWT, Swing, JavaFX & SWT 2
S Wieso werden die Bilder nicht angezeigt? AWT, Swing, JavaFX & SWT 4
G Progressbar aktualisiert sich nicht (vernünftig). WIESO? AWT, Swing, JavaFX & SWT 2
A MouseListener funktionert nie AWT, Swing, JavaFX & SWT 12
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
L Swing CellRenderer für einzelne Zellen? AWT, Swing, JavaFX & SWT 5
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
S Verständnisproblem mit CellRenderer AWT, Swing, JavaFX & SWT 1
M Swing Jtable CellRenderer Parameter uebergeben AWT, Swing, JavaFX & SWT 4
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
J JTable: Problem bei CellRenderer AWT, Swing, JavaFX & SWT 3
S Swing Zelle einer JTable hervorheben (ohne CellRenderer) AWT, Swing, JavaFX & SWT 3
Spin CellRenderer Probleme bei JList AWT, Swing, JavaFX & SWT 4
S Swing Jlist - CellRenderer/ Selektion AWT, Swing, JavaFX & SWT 2
B JTable CellRenderer AWT, Swing, JavaFX & SWT 5
D Swing JList, CellRenderer und Model AWT, Swing, JavaFX & SWT 6
J CellRenderer einzelne zellen Hintergrund AWT, Swing, JavaFX & SWT 9
hdi Swing JTable: Mein CellRenderer ist ein Performance-Killer? AWT, Swing, JavaFX & SWT 7
E Swing JTable mit CellRenderer AWT, Swing, JavaFX & SWT 7
J Swing JXTable, vom CellRenderer gerendertes Value holen. AWT, Swing, JavaFX & SWT 5
J JList CellRenderer Null-Layoutpanel AWT, Swing, JavaFX & SWT 4
? Tabelle formatieren - auch ohne CellRenderer? AWT, Swing, JavaFX & SWT 6
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
H JTable und CellRenderer AWT, Swing, JavaFX & SWT 2
M CellRenderer in JTable AWT, Swing, JavaFX & SWT 11
D JList Cellrenderer fügt mehrfach ein AWT, Swing, JavaFX & SWT 2
G JTable, TableModel und CellRenderer AWT, Swing, JavaFX & SWT 3
K Verständnisfrage zum CellRenderer AWT, Swing, JavaFX & SWT 4
G [Problem] CellRenderer und ActionCommand AWT, Swing, JavaFX & SWT 5
K JTable - warum funktioniert mein CellRenderer nicht? AWT, Swing, JavaFX & SWT 9
G CellRenderer, der einige ImageIcons aneinanderreiht AWT, Swing, JavaFX & SWT 5
G JTable: Zellenhöhe mit neuem CellRenderer & Editor AWT, Swing, JavaFX & SWT 17
G CellRenderer funkt net AWT, Swing, JavaFX & SWT 5
T CellRenderer funzt net AWT, Swing, JavaFX & SWT 20
F JTable CellRenderer über boolean AWT, Swing, JavaFX & SWT 12
M Krieg keine CellRenderer Methode hin :( AWT, Swing, JavaFX & SWT 12
C JTable mit JPanel als CellRenderer AWT, Swing, JavaFX & SWT 2
G JTable CellRenderer-Problem AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben