Hgr- Farbe einer JTable ändert sich nicht

Status
Nicht offen für weitere Antworten.

Oli

Top Contributor
Hallo,

ich habe folgendes Problemchen:

Ich drucke mehrere Tabellen aus, hierzu werden die Tabellen auf Panlel gelegt und anschließend gedruckt.

Beispiel:

Table 1 (=Header 1 Zeile, dort stehen Größen, die Zellen sind unterschiedlich eingefärbt)
Table 2 (=Tabelle mit Werten)
Table 3 (=Tabelle mit Werten)

Table 4 (=Header 1 Zeile, dort stehen Größen, die Zellen sind unterschiedlich eingefärbt)
Table 5 (=Tabelle mit Werten)
Table 6 (=Tabelle mit Werten)

Die Tabellen werden in einer Funktion erstellt und je nach Übergabeparameter werden dann die Zellen eingefärbt oder eben auch nicht. Für das Einfäben habe ich mir einen TableCellRenderer gebaut, der sich vom DefaultCellRenderer ableitet und die Zellen eben farbig zeichnet. Die Werte in den Zellen und die Tabellen werden alle richtig angezeigt, nur die Färbung der Tabelle 1 und 4 ist immer die, der Tabelle 4. Die Werte passen nur die Färbung nicht.
Genauer die Färbung der Tabelle 4 wird auch für die Tabelle 1 übernommen.

mit

Code:
for (int i = 0; i < table.getColumnCount(); i++) {
 table.getColumnModel().getColumn(i).setCellRenderer(new SpecialTableCellRenderer());
}

mache ich die Zellen farbig. Aber wie gesagt, die Tabellengröße und die Werte passen, nur die Farben eben nicht. Woran liegt das?

Danke Oli
 

Oli

Top Contributor
Hallo,

hier die Klasse:

Code:
private class SpecialTableCellRenderer extends DefaultTableCellRenderer {
 private static final long serialVersionUID = 1L;
 int tablecolumn = 0;
 int tablerow = 0;

 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
   this.tablerow = row;
   this.tablecolumn = column;
   super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
   this.setForeground(Color.WHITE);
   return this;
 }

 protected void paintComponent(Graphics g) {
   Vector<Farbcodes> farbCodes = getFarbMarkierung(tablecolumn);
   if (farbCodes.size() > 0) {
    if (tablerow == 0) {
     if (tablecolumn == 0) {
       int h = (int) getHeight() / 2;
       int w = (int) getWidth() / 3;
       g.setFont(new Font("Arial", Font.BOLD, 8));
       g.drawString((String) (farbCodes.get(0)).getText(), w + 4, h - 2);
       g.drawRect(w, 0, w * 2 + 2, h);
       if (farbCodes.size() > 1) {
         g.drawString((String) (farbCodes.get(1)).getText(), w + 4, h * 2 - 1);
       }
       g.drawRect(w, h, w * 2 + 2, h + 1);
     }
     if (tablecolumn > 0) { // Erste Column nicht farbig machen
      Color orig = g.getColor();
      int h = (int) getHeight() / 2;
      g.setColor(farbCodes.get(0).getFarbe1());
      g.fillRect(0, 0, getWidth(), h);
      g.setColor(Color.WHITE);
      if (farbCodes.size() > 1) {
        g.setColor(farbCodes.get(1).getFarbe1());
        this.setForeground(farbCodes.get(1).getFarbe2());
      }
      else {
        this.setForeground(Color.BLACK);
      }
     g.fillRect(0, h, getWidth(), h);
     g.setColor(Color.BLACK);
     g.drawRect(0, 0, getWidth(), h);
     g.drawRect(0, h, getWidth(), h);
     g.setColor(orig);
    }
   }
  }
  super.paintComponent(g);
 }
}

Wie gesagt, die Zellen weren farbig, das ist nicht das Problem, nur wenn ich die Tabelle 1 generiere werden die Werte eingetragen, die passen ja dann auch auf dem Ausdruck. Dann generiere ich Tabelle 4, da passen die Werte auch und die Farben dafür passen. Nur in der Tabelle 1 werden dann die Farben für die Tabelle 4 genommen und nicht die für die Tabelle 1. Des check ich momentan net ganz
 

André Uhres

Top Contributor
Naja, das müsste auch im Prinzip funktionieren.
Ich habe einen kleinen Testrahmen erstellt, da kommt bei mir dies heraus:
File0001.JPG
 

Oli

Top Contributor
Ja, so sollte es ja auch aussehen, nur dass eben bei mir beide Tables cyan sind. Da muss der Fehler wohl woanders liegen.
Hm, eventuell darin:

Ich habe die 3 Tabellen global deklariert und nutze dann eine Funktion die mir immer diese 3 Tabellen füllt und auf ein Panel added.

Das kann einmal oder eben zweimal sein. Wie gesagt, die Daten usw. passen nur die Farben nicht? Noch jemand ne Idee??

Grüße
 

André Uhres

Top Contributor
Vielleicht liegt es an den Farbcodes. Meine Testversion sieht so aus ("id" ist die Tabellennummer):
Code:
class Farbcodes {
    private String t = "";
    public String getText() {
        if (id == 1) {
            t = "yellow";
        } else if (id == 4) {
            t = "cyan";
        } else {
            t = "white";
        }
        return t;
    }
    public Color getFarbe1() {
        if (id == 1) {
            return Color.YELLOW;
        } else if (id == 4) {
            return Color.CYAN;
        } else {
            return Color.WHITE;
        }
    }
    public Color getFarbe2() {
        if (id == 1) {
            return Color.BLUE;
        } else if (id == 4) {
            return Color.RED;
        } else {
            return Color.BLACK;
        }
    }
}
 

Oli

Top Contributor
Hi,

nein an den Farbcodes liegt es nicht, die Farben werden aufgrund verschiedener Parameter aus einer Datenbank geholt und dargestellt. Vom Prinzip her ist das aber so wie bei dir.

Sehr strange das Ganze. Das ist bestimmt ein blödsinniger trivialer Fehler, den man auf Anhieb nicht sieht. Naja ich schau mal ob ich den Bug finde, vielen Dank soweit...
 

Oli

Top Contributor
Hm, also ich hab das Problem entdeckt. Wie gesagt, die Farben ermitteln sich auf Grund im Programm ausgewählter Parameter.
Ablauf:

Auswählen von zwei Parametern, dann die ersten drei Tabellen auf ein Panel legen.

Zwei andere Parameter auswählen und dann die drei Tabellen auf ein anderes Panel legen.

Die paint - Methode des Renderers wird aber erst aufgerufen, wenn das Panel tatsächlich gezeichnet wird.

Und da kennt er eben nur die zuletzt gewählten beiden Parameter...

Vielen Dank für die Hilfe...
 

André Uhres

Top Contributor
In meinem Testprogramm übergebe ich die "id" an eine Methode "private JTable createTable(final int id, ...)".
In dieser Methode habe ich die Klasse "SpecialTableCellRenderer" lokal definiert
und die Klasse "Farbcodes" ist auch lokal im Renderer definiert.
Darum ist mein Testprogramm wohl zum Funktionieren verurteilt :lol:
 

Oli

Top Contributor
Richtig, genau das habe ich nun bei mir auch so umgesetzt und siehe da es funktioniert....

Ist ja unglaublich, kaum macht mans richtig, schon funktionierts....

Vielen Dank für die Denkanstöße :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
N Die Zeile einer JTable verändert beim klicken ihre Farbe? AWT, Swing, JavaFX & SWT 7
G Farbe einer JTable-Zeile von "Außen" ändern AWT, Swing, JavaFX & SWT 2
S Farbe einer Zelle in JTable ändern AWT, Swing, JavaFX & SWT 13
M Farbe der Umrandung einer ausgwählten Zeile ändern (JTable) AWT, Swing, JavaFX & SWT 3
S JTable - farbe einer cell/row ändern, Hilfe please AWT, Swing, JavaFX & SWT 2
G JTable! Beim anklicken einer Zeile soll sich Farbe ändern! AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
D JComboBox jedes Item mit einer anderen Farbe AWT, Swing, JavaFX & SWT 10
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
L wie setze ich die Farbe des Pfeils in einer JComboBox? AWT, Swing, JavaFX & SWT 5
G Farbe der Markierung einer Componente ändern AWT, Swing, JavaFX & SWT 2
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
H Farbe einer Tabellenspalte ändern AWT, Swing, JavaFX & SWT 3
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6
jojoge Wie erstelle ich runde Buttons mit Farbe? AWT, Swing, JavaFX & SWT 1
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
W Farbe des Fensters AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
V LookAndFeel JSpinner Hintergrund Farbe mit Nimbus LaF AWT, Swing, JavaFX & SWT 0
X mouseover verändert ungewollt die farbe AWT, Swing, JavaFX & SWT 4
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
S Farbe von JButton ändern AWT, Swing, JavaFX & SWT 5
T Jbutton Click farbe ändern AWT, Swing, JavaFX & SWT 4
C AWT Wie setze ich die Farbe "leuchtetgrün"? AWT, Swing, JavaFX & SWT 4
B Swing Button Farbe AWT, Swing, JavaFX & SWT 3
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
N Farbe abziehen AWT, Swing, JavaFX & SWT 3
R Farbe von Buttons stimmt nicht AWT, Swing, JavaFX & SWT 2
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
T DefaultTableCellRenderer Farbe bestimmter Zelle ändern AWT, Swing, JavaFX & SWT 2
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
T JTable Zellen Farbe AWT, Swing, JavaFX & SWT 13
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
N SWT-Widgets in Farbe AWT, Swing, JavaFX & SWT 21
F JButton Text-Farbe bei Disabled AWT, Swing, JavaFX & SWT 2
C Farbe eines ToolTipTextes eines Buttons AWT, Swing, JavaFX & SWT 4
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
Q 3D-Grafik Cube Farbe setzen zur Laufzeit. AWT, Swing, JavaFX & SWT 10
I Schrift und Farbe formatieren, und zwar pro Linie... AWT, Swing, JavaFX & SWT 4
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
chik Button beschriften und Farbe zufällig anordnen AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
D SWT TabItem Farbe der Schrift ändern AWT, Swing, JavaFX & SWT 3
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
O AWT Zeichne mit eigener Farbe AWT, Swing, JavaFX & SWT 3
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
V JComboBox - Farbe in der Auswalliste AWT, Swing, JavaFX & SWT 7
GambaJo Farbe eines JFrames AWT, Swing, JavaFX & SWT 2
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
D Farbe bei einem JButton wechseln AWT, Swing, JavaFX & SWT 4
L Farbe des Auswahlrechtecks bei selektierter Tabellenzeile AWT, Swing, JavaFX & SWT 9
M JComboBox Selected-Background Farbe AWT, Swing, JavaFX & SWT 5
K Farbe eines Pixels in einem Bild AWT, Swing, JavaFX & SWT 7
I JLabel Farbe AWT, Swing, JavaFX & SWT 1
G JOptionPane mit andere Farbe AWT, Swing, JavaFX & SWT 8
G JFrame und Farbe AWT, Swing, JavaFX & SWT 4
M Farbe eines strings in JTextArea AWT, Swing, JavaFX & SWT 2
J JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 2
F Farbe für den Hintergrund eine BorderLayout-Teils AWT, Swing, JavaFX & SWT 5
G Bild mit transparente farbe für den IE6 AWT, Swing, JavaFX & SWT 5
G Farbe ändern bei Klick auf einen Kreis AWT, Swing, JavaFX & SWT 5
B transparente Farbe AWT, Swing, JavaFX & SWT 3
H JButton Farbe verändern AWT, Swing, JavaFX & SWT 4
G Bild a auf Bild b, bestimmte Farbe (zb Weiß) durchsichtig AWT, Swing, JavaFX & SWT 7
G JTable Zeile mit Farbe füllen AWT, Swing, JavaFX & SWT 2
I Farbe aus einem Icon herauslesen AWT, Swing, JavaFX & SWT 5
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
E Spalten Farbe ändern AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben