Welche dieser Schleifen im TableCellRendererist effizienter?

Status
Nicht offen für weitere Antworten.
A

Andi0815

Gast
Hallo!

folgendes ist das Problem:
Es sollen einige tausend JTable Zellen auf bestimmte Eigenschaften überprüft werden, so z.B. ob in einem String überflüssige Leerzeichen enthalten sind, oder ob ein bestimmtes Wort vorkommt. Das ganze wird im TableCellRenderer geprüft und wenn dies der Fall ist, soll die Zelle eine Warnfarbe bekommen.
Zudem wird zunächst geprüft, ob diese Funktion überhaupt eingeschaltet ist.

Folgendes hab ich mir dazu überlegt:

Hinweis: Die boolean "whitespace" ist die Einstellung des Users, ob überhaupt danach gesucht werden soll!
Code:
            if (((value.toString().endsWith(" ")) || (value.toString().startsWith(" "))) && (whitespace == true) ) {
                setBackground(Color.MAGENTA);
                System.out.println("Whitespace gefunden");
            }



        while (whitespace==true){
            if (((value.toString().endsWith(" ")) || (value.toString().startsWith(" "))) {
                setBackground(Color.MAGENTA);
                System.out.println("Whitespace gefunden");
            }
        }

Hierzu die Frage, welcher dieser beiden Möglichkeiten die bessere ist.


Weiterhin wird noch mehrfach nach bestimmten Wörter gesucht. Jeweils auch nur, wenn der User das möchte (vorname == true)

Code:
            if (vorname == true){
                if (value.toString().compareToIgnoreCase(Vorname) == 0) {
                    reihe= reihe+row;  //ist dazu da um festzustellen ob die ganzen zu suchenden wörter  in einer reihe stehen
                    setBackground(Color.RED);
                System.out.println("Vorname gefunden");
                }
            }

// ... dieser Code kommt dann noch 5-6 mal vor, jeweils für nachname, titel etc.

Hier fällt mir auch die 2. Möglichkeit wie oben mit der while schleife ein.

Ich bitte um ein paar Meinungen, welche der Schleifen ich benutzen soll. Oder habt ihr vielleicht noch eine bessere Möglichkeit, die für einen Anfänger noch zu verstehen sind :)

Da der Renderer ja scheinbar bei jeder kleinsten Mausbewegung aufgerufen wird, möchte ich hier möglichst performant arbeiten, um unnötige Belastung zu vermeiden

Viele Grüße
Andi
 

Sky

Top Contributor
In nem Renderer würde ich (pauschal) jede Art von Schleife als Falsch ansehen.

--> while (whitespace==true){ ist nicht gut
 

Bleiglanz

Gesperrter Benutzer
pack das ins Model, so dass nicht einfach Strings abgegeben werden sondern ein Spezialobjekt, aus dem du die Hintergrundfarbe ablesen kannst
 

clemson

Bekanntes Mitglied
und bei dieser prüfung
Code:
if (((value.toString().endsWith(" ")) || (value.toString().startsWith(" "))) && (whitespace == true) ) {
                setBackground(Color.MAGENTA);
                System.out.println("Whitespace gefunden");
            }

würde ich wennschon zuerst überprüfen, ob überhaupt whitespace true ist. wenn nicht, dann wird der rest der abfrage gar nicht erst ausgewertet (kann bei mehreren tausend zeilen wie du sagst) mitunter zeit einsparen...

also so:
Code:
if ( (whitespace == true) && ((value.toString().endsWith(" ")) || (value.toString().startsWith(" "))) ) {
                setBackground(Color.MAGENTA);
                System.out.println("Whitespace gefunden");
            }

aber ich finde auch, dass du das im model erledigen solltest. zumindest solltest du im model festlegen, ob es speziell angezeigt werden soll (true false, oder wenn mehrere zustände geben soll mit konstanten) und welche farbe du dann nimmst, entscheidest du dann im renderer, weil da gehört es auch meiner meinung nach hin...
 
A

Andi0815

Gast
Wie entlocke ich einem neuem Objekt denn die Farbinformation?

Habe jetzt ein Objekt erstellt, welches den String und eine Farbinfo enthält. Im Model wird in der getValueAt Methode der String und eine Farbinfo ins Objekt geschrieben. und dieses dann returnt.

Hab dem Objekt eine Methode gegeben, die die Farbinfo ausspucken soll. Wenn ich aber jetzt im Renderer Versuche mit value.getFarbInfo diesen Wert zu bekommen, geht das nicht. Wie dann=
 

clemson

Bekanntes Mitglied
ich nehme an, das value ist vom Typ java.lang.Object, oder? Dann musst du zuerst noch auf dein Objekt casten und dann steht auch die methode getFarbInfo zur Verfügung...
 
A

Andi0815

Gast
Ah Supi, das funzt soweit :D

Jetzt hab ich grad ein anderes Problem bekommen: Vorher konnte man ganz einfach per Doppelklick in die Zelle und den Inhalt verändern. Mit dem Spezialobjekt geht das nun nicht mehr. Wie bekomme ich das wieder hin?
 
G

Guest

Gast
Andi0815 hat gesagt.:
Vorher konnte man ganz einfach per Doppelklick in die Zelle und den Inhalt verändern. Mit dem Spezialobjekt geht das nun nicht mehr. Wie bekomme ich das wieder hin?

Kommt schon, weiß das denn keiner? :(
 

Mag1c

Top Contributor
Jo,

die JTable weiß nicht, wie sie dein Objekt bearbeiten soll. Brauchst also zu dem Renderer noch einen Editor. (siehe FAQ)

Gruß
Mag1c
 
G

Gast

Gast
Sodele. Habs jetzt so umgeschrieben, das im Model ein Objekt mit Farbinfo übergeben wird, das im Renderer ausgelesen wird. Funzt soweit.

Jetzt habe ich nen Editor geschrieben, der den Inhalt der Zellen neu schreibt.

Jetzt ist nur das Problem: Wenn in der Vorhandenen geladenen Tabelle der Wert "Vorname" vorkommt, macht er den Hintergrund rot, wie gewünscht. Wenn ich diesen Wert aber dann neu eintrage, macht ers nicht mehr rot, so als ob es den wert nicht geben würde, woran könnte das liegen?
 

Mag1c

Top Contributor
Hi,

Hast du geprüft, ob dein eingegebener Wert auch tatsächlich so wie gewünscht im TableModel ankommt (setValueAt(...)). Wenn das korrekt ist, mußt du mal dein TableModel und den Renderer zeigen.

Gruß
Mag1c
 
G

Gast

Gast
Der String muss ja ankommen. Ich seh ihn ja schließlich :D

Also die Werte werden immer als String behandelt. Gespeichert als ein zweidimensionales String Array im Model. Einzig dem übergeben der Daten vom Model an den Renderer wird der String als Objekt mit Farbinfo übergeben.

Wenn jetzt mit dem Editor ein String geschrieben wird, der dann an das Model übergeben wird, müsste das Model doch dann den String lesen können, erkennen, das es ein gesuchtes Wort ist, es als Objekt mit Farbinfo an den Renderer übergeben. Machts aber nicht. Es wird nur angezeigt, ohne Farbinfo
 
G

Gast

Gast
Argh ich bin so dumm!

Soll ich dir mal erzählen warum es nicht ging? Der Editor erbt von der JEditorPane. Ich habe das editieren der Zelle immer mit einem Return abschlossen. Und jetzt rate mal, der Cursor geht in eine neue Zeile und ist nicht mehr sichtbar und man denkt, der hat die Zelle geändert, dabei hat er nur einen Zeilenumbruch eingefügt. Deshalb wurde das auch nicht mehr gefunden *gmpf*
Auf sowas muss man erstmal kommen
 
G

Gast

Gast
Hmm ich hab JEditorPane genommen, weil beim JTextField beim editieren innerhalb der Tabelle so ein unschöner Rahmen ist, wo dann das Wort abgeschnitten wird. Dem JEditorPane kann man den Zeilenumbruch nicht abstellen oder?
 

Mag1c

Top Contributor
Hi,

damit kannst du die Zellen-Höhe korrekt einstellen:

table.setRowHeight(new JTextField().getPreferredSize().height);

und damit machst du den Rand weg:

textField.setBorder(null);

sieht absolut sauber aus bei mir.

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Q SMS basierte Applikationen, welche Programmiersprache? Java Basics - Anfänger-Themen 8
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
FelixN Teilsummenproblem / welche Datenstruktur Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
W Welche Komponente ist geeignet? Java Basics - Anfänger-Themen 1
A Welche Operation ist das? Java Basics - Anfänger-Themen 2
J Welche Java-Version installieren Java Basics - Anfänger-Themen 9
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
K GUI Entwicklung - Welche Richtung passt für euch zum mobilen Zeitalter? Java Basics - Anfänger-Themen 4
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Welche Verteilung? Java Basics - Anfänger-Themen 1
L Welche Methode? Java Basics - Anfänger-Themen 7
O Methoden welche ich implementier Java Basics - Anfänger-Themen 11
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
M JDK installieren Welche Software bei XP? Java Basics - Anfänger-Themen 5
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
M Welche Entwicklungsumgebung? Java Basics - Anfänger-Themen 32
I Welche Schleife/Bedingung nehme ich her Java Basics - Anfänger-Themen 5
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
K Erste Schritte Java lernen - Welche Bücher? Java Basics - Anfänger-Themen 1
P welche Komponente ist im Layout? Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
G Welche Java-Version auf meinem Rechner? Java Basics - Anfänger-Themen 2
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
V welche Methode am besten sich für JPG einfügung in Java anzugewöhnen ? Java Basics - Anfänger-Themen 4
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
G Welche JAVA IDE? Java Basics - Anfänger-Themen 3
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
K Welche Java Version ist die richtige Java Basics - Anfänger-Themen 3
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
C Datenbank - Welche Java Basics - Anfänger-Themen 5
S Welche Art von Liste? Java Basics - Anfänger-Themen 3
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
T Welche Schleife? Java Basics - Anfänger-Themen 6
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
R Welche Datenstruktor für diese Liste? Java Basics - Anfänger-Themen 6
B Erste Schritte Welche Kenntnisse brauche ich für diese Programmidee? Java Basics - Anfänger-Themen 4
P Vererbung herausfinden welche Klasse was erbt Java Basics - Anfänger-Themen 3
K welche art von Liste für TableModell Java Basics - Anfänger-Themen 2
D Welche API für komplexe XML-Struktur? Java Basics - Anfänger-Themen 25
S welche Programmstruktur? Java Basics - Anfänger-Themen 8
M Welche Datenbank? Java Basics - Anfänger-Themen 5
B Welche Themengebiete benötige ich? Java Basics - Anfänger-Themen 7
StupidAttack Gson, welche Datenstruktur? Java Basics - Anfänger-Themen 4
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
H Welche Art der Ein/Ausgabe Java Basics - Anfänger-Themen 2
D Welche Datenstruktur für welche Problemstellung? Java Basics - Anfänger-Themen 10
U Welche(s) Framework(s) wären geeignet? Java Basics - Anfänger-Themen 8
StrikeTom Welche Dateitypen unterstützt JMF (Java Media Framework)? Java Basics - Anfänger-Themen 6
S Welche Collection? Java Basics - Anfänger-Themen 5
A Welche UML Software benutzt ihr / ist empfehlenswert? Java Basics - Anfänger-Themen 2
N Welche Datenstukturen und Methoden Java Basics - Anfänger-Themen 3
L Auswahl auf welche Art gespeichert werden soll Java Basics - Anfänger-Themen 6
B Welche Java-Installation ist aktiv? Java Basics - Anfänger-Themen 2
B Finden gemeinsamer Kanten: welche Datenstruktur ? Java Basics - Anfänger-Themen 9
S Welche möglichkeiten gibt es eine Zahl zu spiegeln? Java Basics - Anfänger-Themen 17
U Welche Seite für Anfänger Java Basics - Anfänger-Themen 11
K Welche Entwicklungsumgebung für Einsteiger? Java Basics - Anfänger-Themen 16
S Webapplikation welche alternative zu gwt? Java Basics - Anfänger-Themen 2
cowabunga1984 Unit-Testing - Welche Testfälle sind relevant? Java Basics - Anfänger-Themen 4
S Welche Methode in JFrame überschreiben? Java Basics - Anfänger-Themen 12
H Designfrage: Welche Liste? Java Basics - Anfänger-Themen 3
Z Welche IO-Klasse verwenden? Java Basics - Anfänger-Themen 2
G Welche Datenstruktur ( Sets / Maps)? Java Basics - Anfänger-Themen 10
M Der Java Schlüsselwort null; ?Welche Anweisung und Sinn? Java Basics - Anfänger-Themen 12
G Herausfinden, welche Componente als LETZTES focus hatte Java Basics - Anfänger-Themen 2
H Welche PDF Biblothek? Java Basics - Anfänger-Themen 6
G Variable welche in anderer Klasse liegt, verändern. Java Basics - Anfänger-Themen 2
G Frage:Welche Methodne kann man eine Zahl bzw. ein String Java Basics - Anfänger-Themen 3
U Welche Datenstruktur soll ich nehmen? Java Basics - Anfänger-Themen 11
K Welche Exception? Java Basics - Anfänger-Themen 6
G Welche Datenstruktur ist hier die sinnvolste Java Basics - Anfänger-Themen 6
G welche Teile der api sind wichtig? Java Basics - Anfänger-Themen 3
K Welche methoden gibt es in Java um Zahlen von der Java Basics - Anfänger-Themen 11
G welche Java-Technologie für JDBC geeignet Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben