Spalte der Tabelle abwechselnd färben

Iron Monkey

Bekanntes Mitglied
Hi!

Die sortierte Spalte der Tabelle soll wie folgt abwechselnd gefärbt werden:

1|
2|-- grün färben, da zwischen 3 und 5 die 4 fehlt!
3|
--
5|
6|-- weiss färben, da zwischen 7 und 25 die Zahlen fehlen!
7|
--
25|-- grün färben, da zwischen 26 und 35 die Zahlen fehlen!
26|
--
35|-- grün färben, ...
36|
usw.

Ich habe keine Idee, wie ich das ganze effektiv rendern soll, da in der Tabelle ca. 320.000 Datensätze sind!

Ich hoffe ihr könnt mir helfen und schon mal Danke im Voraus!

Gruß
Iron Monkey
 
S

SlaterB

Gast
was ist eine Tabelle, was ist eine Spalte? geht es um Swing, JTable?
auch bei 300.000 Datensätzen wird doch wohl die Spaltenanzahl konstant bei maximal 10 oder so liegen?
willst du nicht eher einzelne Zellen färben?

dein Beispiel sieht bisschen komisch aus, ist da was verrutscht? 'da zwischen 3 und 5 die 4 fehlt!' schon auf Höhe der 2?
edit: oder betrifft es alle Zahlen dort? (*)
hat es eine Bedeutung, dass du einmal 'weiß' und dreimal 'grün' färben willst?

grundsätzlich gibt es ja Code-Beispiele für Färberung von Spalten oder eher einzelnen Zellen,
das findet natürlich bzw. als Vorschlag programmatisch statt, Schleife, oder Methode die pro Zelle aufgerufen wird
(Renderer, erstmal Beispiele kennenlernen)
und wenn es zur Frage der Farbe eines Elementes kommt, dann genau ein passendes if programmieren, welches etwa die Werte aus den Daten zu den benachbarten Einträgen sucht und schaut ob Lücke vorhanden oder nicht

edit:
wenn (*) gilt oder sonstwie etwas komplizierten,
dann könntest/ solltest du irgendwo nahe der Daten zusätzliche vorberechnete Informationen ablegen,
die in einem Durchgang, nicht bei jeder Zelle neu, bestimmt werden,
z.B. zu jedem Eintrag eine Color-Variable
 
Zuletzt bearbeitet von einem Moderator:

Iron Monkey

Bekanntes Mitglied
OK, vielleicht habe ich nicht so ganz klar ausgedrückt!

Es handelt sich um einen Swing -> JTable! Ich weiss, dass der Renderer auch nur die Sichtbarkeit der JTable verarbeiten kann! Ich schreibe gerade eine Funktion dafür! Mal sehen, ob ich das hinkriege! Wenn nicht, werde ich hier veröffentlichen!

Also, mein Beispiel soll so aussagen, wie der Renderer von 1 bis ganz nach unten der Spalte durchprüfen, ob dort Zwischenlücken gibt, d.h. siehe Beispiel: Die 4 fehlt, das bedeutet, dass 1, 2 und 3 sollen in grün gefärbt werden und wenn es die nächste Zwischenlücke wiederkommt, dann weiss, dann grün, usw.! Zwischen 5, 6, 7 gibt es natürlich keine Lücke, also gehören die zusammen eine Farbe!

Ich hoffe, dass ich die Beschreibung noch näher erklärt habe und bei Fragen stellen Sie ruhig!

Gruß
Iron Monkey
 
Zuletzt bearbeitet von einem Moderator:

Iron Monkey

Bekanntes Mitglied
So, das ist jetzt meine Funktion, die zwar noch nicht ganz sauber funktioniert:

Das Problem ist nur, dass die Farbdarstellung nicht fest bleibt! Es wechselt immer wieder, wenn ich z.B. die JTable scrolle, usw.!

Code:
		int diffNummer 	= 0;

		Object firstValue 	= table.getValueAt( fromRow, searchColumn );
		Object lastValue 	= table.getValueAt( ( ( ( fromRow + 1) >= table.getRowCount() ) ? table.getRowCount()-1 : fromRow + 1 ), searchColumn );

		if( firstValue != null && lastValue != null )
		{
			diffNummer = Integer.valueOf( firstValue.toString() ) - Integer.valueOf( lastValue.toString() );

			// Differenz kleiner als -1 oder größer als 1
			if( diffNummer < -1 || diffNummer > 1 )
			{
				firstValue = null;
				lastValue = null;
				
				if( !CHANGE_COLOR )
				{
					CHANGE_COLOR = true;

					return Color.WHITE;
				}
				else
				{
					CHANGE_COLOR = false;

					return groupColor;
				}
			}
		}

		firstValue = null;
		lastValue = null;
		
		if( !CHANGE_COLOR )
			return Color.WHITE;
		else
			return groupColor;

Ich hoffe, ihr findet den Fehler! :)

Gruß
Iron Monkey
 
S

SlaterB

Gast
auch womöglich statische Variablen schreibt man klein,
die CHANGE_COLOR-Schreibweise bitte nur für Konstanten, und du veränderst ja munter..

CHANGE_COLOR scheint anscheinend vom vorherigen Ablauf einen zufälligen Wert zu haben,
zudem beginnt man je nach Scrollstand irgendwo in der Liste, da ist es wirklich schwer ein System zu finden

(alle Bäume an einer Allee werden gedanklich ab Ortsausgang abwechselnd gerade/ ungerade bezeichnet,
wie soll man in der Mitte wissen welche was sind, abwechselnd ist klar, aber reicht nicht)

du musst also feste Kennzeichnungen vergeben, anders gehts nicht,
die Daten einmalig durcharbeiten, für jeden Index die Farbe ausrechnen und ablegen,

wenn die table-Daten keinen Platz für Color haben, dann evtl. separate Datenstruktur, etwa eine Map Index -> Color,
oder auch nur in einem Set die Indexe merken, die grün sind, rest dann die andere Color
 

Iron Monkey

Bekanntes Mitglied
Hi!

auch womöglich statische Variablen schreibt man klein,
die CHANGE_COLOR-Schreibweise bitte nur für Konstanten, und du veränderst ja munter..

Stimmt, das war nicht mit Absicht! Soweit berichtigt! ;-)

CHANGE_COLOR scheint anscheinend vom vorherigen Ablauf einen zufälligen Wert zu haben,
zudem beginnt man je nach Scrollstand irgendwo in der Liste, da ist es wirklich schwer ein System zu finden

(alle Bäume an einer Allee werden gedanklich ab Ortsausgang abwechselnd gerade/ ungerade bezeichnet,
wie soll man in der Mitte wissen welche was sind, abwechselnd ist klar, aber reicht nicht)

Richtig, das macht auch keinen Sinn! Da habe ich nicht drüber nachgedacht!

du musst also feste Kennzeichnungen vergeben, anders gehts nicht,
die Daten einmalig durcharbeiten, für jeden Index die Farbe ausrechnen und ablegen,

wenn die table-Daten keinen Platz für Color haben, dann evtl. separate Datenstruktur, etwa eine Map Index -> Color,
oder auch nur in einem Set die Indexe merken, die grün sind, rest dann die andere Color

Wieso ist mir das nicht darauf gekommen? Natürlich, genau dieses Problem habe ich soweit gelöst, indem ich einmalig die Daten in die Map ( Index -> Color ) schreibe und der Renderer braucht nur praktisch die Farbe aus der Map holen!

Danke für den Tipp! ;-)

Gruß
Iron Monkey
 
S

Spacerat

Gast
Wenns darum geht, eine Folge von Zeilen unabhängig von ihrer Zeinennummer zu färben, ist die Zeilennummer als "Laufvariable" eine ganz ganz schlechte Wahl. Vielmehr sollte man eine "virtuelle" Zeilennummer verwenden, die, egal ob etwas fehlt oder nicht, pro vorhandener Ausgabezeile inkrementiert und auf die Anzahl der Farben moduliert wird.
Java:
Map<Integer, String> lines = myLineNumberedTextDocument;
Color[] colors = new Color[] {Color.GREEN, Color.WHITE};
int color = 0;
for(Entry<Integer, String> line : lines.entrySet()) {
  Color out = colors[color];
  // gefaerbte Ausgabe von line
  color++;
  color %= colors.length;
}
 
S

SlaterB

Gast
[c] // gefaerbte Ausgabe von line[/c]
hat mit JTable, Renderer, Scrollen, nicht grad viel zu tun
 
S

Spacerat

Gast
Das Beispiel so vllt. nicht, aber die Praxis lässt sich mit Sicherheit auch in einem CellRenderer, TableModel oder was immer auch für die Ausgabe verantwortlich ist implementieren. Wäre ja schlimm, wenn nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
C Speicherung fon Zeile und Spalte Allgemeine Java-Themen 2
M benötigte Excelformeln in die letzte Spalte Allgemeine Java-Themen 9
B CellRenderer für ganze Spalte Allgemeine Java-Themen 5
SexyPenny90 Spalte einer Exceldatei in einem String speichern Allgemeine Java-Themen 11
T DataFrame (Matrix mit mit verschiedenen Typen pro Spalte) Allgemeine Java-Themen 4
P JTable suchen in einer Spalte Allgemeine Java-Themen 24
G Hilfe - JButton in JTable (Spalte) einfügen! Allgemeine Java-Themen 6
A Trace-Tabelle erstellen Allgemeine Java-Themen 3
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
L Hash-Tabelle Allgemeine Java-Themen 2
F Tabelle aus CSV, 2 dimensionale HashMap? Allgemeine Java-Themen 4
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
J Datentypen in Java Tabelle Allgemeine Java-Themen 2
T 4x4 Tabelle als Bitboard darstellen Allgemeine Java-Themen 5
P Reordering einer Tabelle im Frontend Allgemeine Java-Themen 1
S 2-spaltige Ausgabe als Tabelle ausgeben Allgemeine Java-Themen 12
K Apache POI Word Tabelle Zellen verbinden Allgemeine Java-Themen 4
K Apache POI Word Tabelle Spaltenbreite festlegen Allgemeine Java-Themen 7
G Tabelle wird nicht richtig dargestellt Allgemeine Java-Themen 9
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
R HTML Tabelle durchsuchen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
Joew0815 JList + JTableModel: Parameter der Tabelle übergeben Allgemeine Java-Themen 10
K HTTP Auslesen einer Tabelle Allgemeine Java-Themen 8
S EAN-Code Tabelle für CD's Allgemeine Java-Themen 2
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
A Tabelle mit iText erstellen Allgemeine Java-Themen 3
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
K LibreOffice Tabelle Dateien im Format .ods bearbeiten Allgemeine Java-Themen 2
M In einer Tabelle rechnen Allgemeine Java-Themen 12
D Tabelle umwandeln Allgemeine Java-Themen 12
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
M Realisierung einer dynamischen Tabelle unter Android Allgemeine Java-Themen 3
nrg JDOM Tabelle lesen Allgemeine Java-Themen 6
S Javascript & MSAccess Tabelle Allgemeine Java-Themen 5
Weiti Programm zum erstellen einer tabelle aus textdateien Allgemeine Java-Themen 24
R Tabelle - Berechnung der "Zeilenart" Allgemeine Java-Themen 2
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2
A Text durchgestrichen in einer Tabelle darstellen Allgemeine Java-Themen 2
D Spaltenbereite einer Tabelle Allgemeine Java-Themen 2
J Leerer Spalteninhalt in einer Tabelle in JSP Allgemeine Java-Themen 5
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
P Datenbank Tabelle spiegeln Allgemeine Java-Themen 22
G Probleme mit dem erstellen einer Tabelle Allgemeine Java-Themen 6
G Tabelle in ein Array schreiben Allgemeine Java-Themen 3
S Excel Tabelle Allgemeine Java-Themen 8
G HTML Tabelle auslesen Allgemeine Java-Themen 8
J Problem mit dem aktualisieren der Tabelle Allgemeine Java-Themen 8
B Tabelle. bei Wertänderung was bestimmtes machen Allgemeine Java-Themen 3
S Werte in Tabelle einfügen! Allgemeine Java-Themen 9
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
M Daten in Excel Tabelle schreiben? Allgemeine Java-Themen 7
H Hash Tabelle einlesen und die Werte an ein Array übergeben Allgemeine Java-Themen 10
D iText: Tabelle in Footer einfügen Allgemeine Java-Themen 6
H Leere Tabelle initialisieren Allgemeine Java-Themen 2
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
N 2 Arrays abwechselnd verbinden Allgemeine Java-Themen 13
P Images abwechselnd Darstellen Allgemeine Java-Themen 12
M run()-Code zweier Threads strikt abwechselnd ausführen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben