TableReendereer

max514

Bekanntes Mitglied
Hey Leute kann mir irgendjemand sagen warum mein Reender in meiner tabelle nur 3 reihen erkennt und einfärbt ??

Java:
public void isLow(JTable jTableBestandstabelle) {

        jTableBestandstabelle.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int row, int column) {
                Component c = super.getTableCellRendererComponent(table, value,
                        isSelected, hasFocus, row, column);
                int aktuellerBestand = (int) jTableBestandstabelle.getValueAt(row, 5);
                int mindestmenge = (int) jTableBestandstabelle.getValueAt(row, 4);
               
                if (aktuellerBestand <=  mindestmenge) {

                    c.setForeground(Color.black);
                    c.setBackground(Color.red);
                    return c;

                }
                else{
                    c.setForeground(Color.black);
                    return c;
                }
       

            }

        });
    }
 

Anhänge

  • Screenshot (59).png
    Screenshot (59).png
    121 KB · Aufrufe: 22
Zuletzt bearbeitet:

mihe7

Top Contributor
Hey Leute kann mir irgendjemand sagen warum mein Reender in meiner tabelle nur 3 reihen erkennt und einfärbt ??
Welcher Renderer verwendet wird, ist abhängig vom Datentypen, wobei die spezielleren Typen Vorrang haben. Du registrierst Deinen für die allgemeine Object-Klasse. Der kommt also nur zum Einsatz, wenn es für den Typen der Spalte keinen spezielleren Renderer gibt. Für Zahlen wird standardmäßig ein Renderer verwendet, der das Label rechts ausrichtet, für Booleans einer, der eine Checkbox darstellt.
 

max514

Bekanntes Mitglied
Des heißt ich brauch ein ganz anderen Renderer ? ich mein meiner ekennt ja das die aktuelle anzahl weniger als die mindestmenge ist aber er färbt trotzdem nur 3 zeilen ein und wenn ich System.out.println(column); schreib gibt er mir auch nur
1
2
3
aus ?

und wenn ich das mach macht er garnichts mehr ?

Java:
if (aktuellerBestand <=  mindestmenge && column == 5) {

                    c.setForeground(Color.black);
                    c.setBackground(Color.red);
                    return c;

                }
 
Zuletzt bearbeitet:

max514

Bekanntes Mitglied
ich hab ihn jetzt so geändert und er macht genau das selbe ?

Java:
public void isLow(JTable jTableBestandstabelle) {
        jTableBestandstabelle.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(
                    JTable aTable, Object aNumberValue, boolean aIsSelected,
                    boolean aHasFocus, int aRow, int aColumn
            ) {

                if (aNumberValue == null) {
                    return this;
                }
                Component renderer = super.getTableCellRendererComponent(
                        aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
                );
                int m = (int) jTableBestandstabelle.getValueAt(aRow, 4);
                int a = (int) jTableBestandstabelle.getValueAt(aRow, 5);
                if (a < m) {
                    renderer.setForeground(Color.black);
                    renderer.setBackground(Color.red);
                } else {
                    renderer.setForeground(Color.black);
                }
                return this;
            }

          
        }); 
    }
 

Anhänge

  • Screenshot (66).png
    Screenshot (66).png
    147,8 KB · Aufrufe: 25

Neue Themen


Oben