Zelle mit berechnungsmaske

hippokeng

Grünschnabel
Halleluja!
Wie erzeugt man folgende elegante Lösung?

Ich habe eine Java-Tabelle JTable Tabelle_A mit Zahlen gefüllt. Einige Zahlen sind editierbar, andere nicht (DefaultTableModel). Jetzt sei die Zahl x Ergebnis einer Funktion von anderen, im Hintergrund befindlichen Zahlen, etwa die Summe von 20 Zahlen. Nun möchte ich, daß beim Anfassen (Doppelklicken) auf die Zahl x das folgende passiert: Es öffnet sich in einem separaten Fenster eine neue Tabelle Tabelle_B, welche die 20 Zahlen anzeigt, deren Summe gerade x ist. Durch Verändern einer oder mehrerer dieser 20 Zahlen ändert sich auch x, und beim Schließen der 20-Zahlen-TabelleTabelle_B sieht man dann das neue Ergebnis x in der Tabelle Tabelle_A.

Realisiert habe ich das schon mit einem separaten Button und ActionListener in Tabelle_A, welcher beim Anklicken Tabelle_B öffnet, welche dann einen Button "Übernehmen" beherbergt, der mir das geänderte Berechnungsergebnis in die Zelle x von Tabelle_A schreibt.

Geht so etwas auch durch direktes Anklicken von x in Tabelle_A? Wahrscheinlich schwierig, einerseits soll diese Zelle einen "normalen" Wert anzeigen, andererseits soll darunter ein ActionListener liegen. Hhmmm.

Vielleicht hat ja jemand eine Weihnachtsüberraschung für mich. Im Moment brauche ich dazu wohl nur eine Idee, noch (?) keinen Code.

Vielen Dank!
hippokeng
 
Hi,
ich habe mir gerade die Dokumentation von JTable angeschaut, und dort gibt es einen Link zu einem kurzen Tutorial wie man die Klasse richtig benutzt. In besagtem Tutorial gibt es einen Abschnitt, wo eigene "Editoren" für Zellen erstellt werden können. Im Beispiel wird ein Zelltyp für eine Farbauswahl gebastelt. Wenn der Benutzer die Farbzelle anklickt, wird ein separates Fenster mit einer Auswahlpalette geöffnet.
Das müsste prinzipiell recht einfach für deinen Anwendungsfall anpassbar sein.

Gruß Technipion
 
. . . As DefaultCellEditor does not support other types of components, you must do a little more work . . .
War mir irgendwie klar, daß es nicht so gaaanz trivial ist. Aber der code steht ja dabei, und nach einem Diagonallesen scheint mir das meinen Fall zu lösen, werde ich mal sehen.
Auf jeden Fall herzlichen Dank für Deine Mühen, Technipion.

Gruß, hippokeng.
 
Super!

Aber du weißt: Wenn du auf Schwierigkeiten stößt, kannst du uns jederzeit deinen Code zeigen und wir helfen gerne weiter :)
 
Super!

Aber du weißt: Wenn du auf Schwierigkeiten stößt, kannst du uns jederzeit deinen Code zeigen und wir helfen gerne weiter :)
Gott zum Gruße!

Es tut mir leid, daß ich mich erst jetzt wieder melde, inzwischen sehe ich dafür etwas klarer durch mein Problem durch. Der Hinweis von Technipion mit dem ColorChooser war leider nur bedingt hilfreich, obwohl er schon in die richtige Richtung geht. Mein Problem ist eigentlich identisch mit demjenigen von
ForenDaddy aus dem Jahr 2011,
JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte
zu dem er meines Wissens auch noch keine zufriedenstellende Lösung gefunden hat. Da der größte Teil der Schilderung und des Hin und Her von ForenDaddy darin bestand, sein Problem allen zuerst klar zu machen, will ich das Pferd einmal von hinten aufzäumen und sagen, was ich konkret machen möchte; vielleicht wird es dann eher verständlich.

Ich will eine Excel-Liste für die 200 Mitglieder eines Sportvereins in eine Datenbank schreiben, um das Ganze übersichtlicher und benutzerfreundlicher zu gestalten. Dazu habe ich folgendes schon realisiert: eine Scroll-Liste mit den 200 Namen und Vornamen; beim Anwählen eines Mitgliedes geht dessen
Datenblatt in einer zweiten scrollbaren Liste auf. Dieses Datenblatt besteht aus genau zwei Spalten und 30-40 Zeilen. Die linke Spalte enthält nicht editierbare Labels (Name, Vorname, Eintrittsdatum, Wohnort, ..., Festnetz-Telephon, Mobil-Telephon, ..., u.a. auch Jahresbeitrag). Jede Zelle der rechten Spalte ist natürlich editierbar.

Jetzt kommt der casus knacktus: Beim Label "Jahresbeitrag" -- und nur hier, nirgndwo sonst, in keiner anderen Zelle der rechten Spalte -- soll zwar eine Zahl stehen, aber beim Anklicken dieser Zahl diese nicht selbst editierbar sein, sondern es soll ein separates Fenster aufgehen, in welchem der bis jetzt gezahlte Jahresbeitrag nach Monaten und Extra-Zahlungen aufschlüsselbar ist. Wenn beispielsweise das Mitglied Dagobert Duck im Oktober erst fünf von zwölf Monatsbeiträgen à 10 Euro bezahlt hat, dafür im Juli eine Extra-Zahlung von 15 Euro rübergeschoben hat, soll das dort vermerkbar sein, und die Zahl, die man vor dem Anklicken zum Öffnen des separaten Fensters in der rechten Spalte sieht, beträgt 5 x 10 + 15 = 65. Ich hoffe, ich habe mich klar ausgedrückt und vermeide die Irritationen in den Antworten zum Beitrag von ForenDaddy.

So, der Hinweis von Technipion mit dem ColorChooser ist insofern hilfreich, als hier schön erklärt wird, wie man mit dem unterliegenden, "nicht sichtbaren" JButton umgeht. Was ich nach wie vor nicht geregelt bekomme, ist die Tatsache, daß das für genau EINE Zelle funktionieren soll, nicht für die ganze Spalte.

Realisiert habe ich dieses separate Fenster schon durch einen Extra-JButton, aber eben nicht so elegant, daß man direkt auf die (bis dahin aufgelaufene) Zahl des Jahresbeitrages klickt.

Viele Grüße, hippokeng
 

Neue Beiträge

Zurück