Swing JCTable auf Java9 anpassen

Roland13

Mitglied
Hallo,
ich verwende aktuell für Tabelleneingaben und Planungen die Klasse jclass.table3.JCTable.
Leider funktioniert diese Klasse (und darin benötigte Klassen) ab Java 9 nicht mehr.
Auch ein Versuch die Klassen zu decompilieren und dann anzupassen ist leider gescheitert.
Aktuell versuche ich es durch die Klasse javax.swing.JTable zu ersetzen.
Leider fehlen da wichtige Funktionen die ich brauche und in der alten JCTable vorhanden waren:
*) Spalten im nachhinein setzen (nicht schon beim erzeugen der Tabelle)
*) einzelnes Feld färben (Vor- und Hintergrund) und Font setzen
*) mehrere Spalten zusammenfassen und JPanel drauflegen

Welche Java-Komponente ist für den Swing-Bereich zu empfehlen um Tabelleneingaben (mit eigenen Eingabekomponenten) zu verwenden und welche ist für Tagesplanungen (auch über mehrere Monate) für mehrere Personen untereinander zu empfehlen.
 
Bis Java 8 haben die Klassen problemlos funktioniert, ab Java 9 kommt folgende Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: java.awt.Component.getPeer()Ljava/awt/peer/ComponentPeer;
    at jclass.table3.Table.paint(Table.java:4645)
    at jclass.table3.Table.repaint(Table.java:4669)
    at jclass.table3.TableDataView.repaintTable(TableDataView.java:416)
    at jclass.table3.TableDataView.resetSwappedRows(TableDataView.java:608)
    at jclass.table3.TableDataView.setDataSource(TableDataView.java:327)
    at jclass.table3.JCTable.<init>(JCTable.java:106)
    at jclass.table3.JCTable.<init>(JCTable.java:99)
    at All_Unlimited.Allgemein.AUTable.<init>(AUTable.java:5191) ...
Ich hab in der JCTable und dafür nötigen Klassen hunderte Fehler korrigiert, es hat aber letztendlich nichts gebracht, da er mir trotzdem nichts dargestellt hat.
Deshalb ja die Frage, was ich stattdessen verwenden kann.
Leider ist JCTable ca 15-20 Jahre alte und deshalb nichts mehr darüber zu finden.
Am liebsten wäre mir wenn ich die alten Klassen auf Java 9 anpassen könnte, aber ich denke das wird nicht mehr möglich sein.
 
Aber ab Jänner wird Java8 nicht mehr unterstützt, die Frage ist ob das auch bedeutet, dass Java 8 nicht mehr aufrufbar ist oder ob nur die Updates (die eh keiner braucht) nicht mehr automatisch kommen.
(Ich weiß dass ich mich zu anderen von mir eröffneten Beiträgen wiederhole, aber wenn Oracle einem das nicht aufzwingen würde, dann könnte man noch normal weitermachen und müsste sich mit der Upgrade-Problematik herumschlagen).
Java 9 ist nötig um JLink verwenden zu können und ohne JLink ist ja Java nächstes Jahr nicht mehr aufrufbar.
 
Es gibt auch noch Java 1.4.2. Dieser Branch wird halt nicht mehr gewartet. Das passiert dann auch mit Java 8. Benutzen lässt sich das noch Problemlos.

Man muss nicht mit Jigsaw arbeiten. Ahja und Java 11 ist dann mit einer LTS. Darum upgraden die meisten Frameworks (populären) erst damit.
 
(Ich weiß dass ich mich zu anderen von mir eröffneten Beiträgen wiederhole, aber wenn Oracle einem das nicht aufzwingen würde, dann könnte man noch normal weitermachen und müsste sich mit der Upgrade-Problematik herumschlagen).
Java 9 ist nötig um JLink verwenden zu können und ohne JLink ist ja Java nächstes Jahr nicht mehr aufrufbar.
Der "Zwang" ist btw ein ganz normaler Versionssprung, wie er bisher alle paar Jahre vorkam...
Java ist auch weiterhin völlig ohne jlink benutzbar, jlink ist nur eine zusätzlich nutzbare Variante. (ernstgemeine Frage, woher nimmst du deine Informationen immer? Die waren auch in deinen anderen Fragen größtenteils völlig falsch...)
 
Die Oracle-Roadmap ist auf folgender Seite nachlesbar: http://www.oracle.com/technetwork/java/javase/eol-135779.html
Beim starten von einem Java-Programm kommt folgende Meldung:
Code:
Warnung: Java Web Start und Java-Plug-in sind veraltet und werden in einem zukünftigen Java-Release wahrscheinlich entfernt.
Der jnlp-Start wird mit Java 11 eingestellt (Info direkt von Oracle), d.h. ein starten am Client vom Web-Server wird dann nicht mehr möglich sein (html-Start geht ja schon lange nicht mehr).
Und Updates von Java werden zukünftig etwas kosten, Info von Oracle:
Kostenpflichtig war der Zugriff auf patches von älteren Java Versionen schon immer.
Da nun bereits alle 6 Monate eine Java Version mit einer neuen ersetzt wird, geht dies nun schneller.


Als „Long Term Support“ Angebot bieten wir Oracle Java 11 ab September 2018 als sog. „LTS release“ an, das mit kommerziellem Supportvertrag dann 5 Jahre „Premier Support“ und anschliessend 3 Jahre „Extended Support“ bietet.
 
Beim starten von einem Java-Programm kommt folgende Meldung:
Code:
Warnung: Java Web Start und Java-Plug-in sind veraltet und werden in einem zukünftigen Java-Release wahrscheinlich entfernt.
Der jnlp-Start wird mit Java 11 eingestellt (Info direkt von Oracle), d.h. ein starten am Client vom Web-Server wird dann nicht mehr möglich sein (html-Start geht ja schon lange nicht mehr).
Das waren immer schon Oracle-Only-Lösungen und zB nicht im OpenJDK enthalten.
Java-Programme lassen sich auch vollkommen ohne dies ausführen (ich persönlich kenne auch niemanden, der dies genutzt hat...)

Und Updates von Java werden zukünftig etwas kosten, Info von Oracle:
Kostenpflichtig war der Zugriff auf patches von älteren Java Versionen schon immer.
Da nun bereits alle 6 Monate eine Java Version mit einer neuen ersetzt wird, geht dies nun schneller.


Als „Long Term Support“ Angebot bieten wir Oracle Java 11 ab September 2018 als sog. „LTS release“ an, das mit kommerziellem Supportvertrag dann 5 Jahre „Premier Support“ und anschliessend 3 Jahre „Extended Support“ bietet.
Du hast aber den ersten Satz des Zitates gelesen? 😉
"Kostenpflichtig war der Zugriff auf patches von älteren Java Versionen schon immer."

Und wie schon mehrmals gesagt: OpenJDK ist und bleibt für immer kostenlos.
 
Ich hab nun die jclass-Komponenten mit jad statt mit jd-gui decompiliert.
Dadurch sind viel weniger Fehler zum korrigieren übrig geblieben, es waren fast nur getPeer-Probleme.
Jedenfalls funktioniert nun die Tabelleneingabe und Planung auch mit Java 9 und Java10.
 
Zuletzt bearbeitet:

Zurück
Oben