Canvas oder scene graph?

DampfHans

Mitglied
Hallo,
ich will ein Programm entwickeln, das einige Hundert Datensätze in einer langen Liste anzeigt. Jeder Datensatz besteht aus zwei Strings, einer kurz, der andere ggfls. sehr lang. Das Ganze sieht dann aus wie ein Theater-Textbuch, was es letztlich auch ist (s. Anhang)
Auf der rechten Seite (in den langen Texten) soll der Anwender wie in einer Textverarbeitung arbeiten können - also eingeben, markieren, drag-drop etc. So etwas wie Formatierungen gibt es aber nicht.
Jetzt meine Frage: Ist für so etwas die Realisation mit scene graph oder mit canvas besser geeignet? Bzw: Geht das mit einem scene graph überhaupt? (Markieren über mehrere Datensätze...?)
Ich bin für jeden Hinweis / jede Idee dankbar!
 

Anhänge

  • skizze.gif
    skizze.gif
    13,4 KB · Aufrufe: 35

DampfHans

Mitglied
Vielen Dank für die interessanten Ideen... aber ich fürchte, ich kann das Verhalten von tableview und listview nicht so weit manipulieren, dass das dabei rauskommt, was ich will. Die rechte (breite) Spalte soll sich wie schon erwähnt wie ein Texteditor verhalten, also z.B. mit völlig freier Textmarkierung (s. Skizze). Oder bekommt man sowas hin?
 

Anhänge

  • skizze2.gif
    skizze2.gif
    15,6 KB · Aufrufe: 26

DampfHans

Mitglied
Interessant... aber ich fürchte auch damit bekomme ich kein datensatzübergreifendes Markieren hin. Wenn ich das auf die Schnelle richtig sehe, wird hier ja "nur" ein Multiline-Edit in eine Zelle eingesetzt (ich kann mich täuschen...) - damit bleibt aber die nächste Zelle ein normaler String. Markieren mit der Maus geht *sehr* vielleicht noch, aber Shift-Pfeil muss scheitern, weil ich ja aus dem Edit nicht rauskomme. Ich werd' aber mal ein bischen damit rumspielen...
Auf jeden Fall aber vielen Dank für den Hinweis!
 

DampfHans

Mitglied
Ja! Danke! Sehr gut formuliert! Genau das ist es. Und die Formulierung bringt mich vielleicht sogar auf eine neue Idee... Wenn ich irgendwie die vertikalen Positionen in einem TextArea rausbekomme, dann ist ein einziges TextArea mit Labels auf den richtigen vertikalen Positionen vielleicht sogar ein Ansatz...
 

mihe7

Top Contributor
@Robat tja, ich weiß, dass Du gerne auf JavaFX-Themen antwortest und ich weiß, dass ich mit JavaFX so gut wie nichts am Hut habe :p

Sein Problem ist im Endeffekt nichts anderes als die Darstellung von Randnotizen neben einer editierbaren Textarea. Das Modell könnte z. B. Text als Sequenz von Absätzen sein, wobei jeder Absatz über eine Randnotiz verfügen kann.
 

dzim

Top Contributor
Auf den ersten Blick würde ich sagen, dass du hier einen TextFlow verwenden müsstest. Die Schwierigkeit wird, links die "Typen" zuzuordnen (ok, den den TextFlow kommen Text-Nodes rein, deren Position kannst du bestimmen (layoutBoundsInNode oder so) und damit kannst du die linke Seite anbinden). Auch die generelle Performance bei sehr grossen Texten. Hier müsstest du eventuell den "virtual Flow" erst selbst erstellen, denn ich denke irgendwann wirst du merken, wenn aller Text immer geladen wird.

Ich arbeite seit frühen JavaFX 2.x-Zeiten (etwa seit 2011) mit JavaFX, aber hier hätte ich keine pauschal "gute" Idee.
Wenn du einen Canvas nimmst, musst du bedenken, dass du jedes Mal einen Redraw beim Scrollen machen musst (ok, nicht so schwer), aber ich weiss nicht, ob man dort Text markieren kann.

Hab noch etwas gegooglet und dabei folgendes (wieder einmal) zu Tage gefördert:
  1. Flowless
    1. https://github.com/FXMisc/Flowless/tree/master/src/test/java/org/fxmisc/flowless
    2. Relativ Low-Level
    3. Gut, wenn du einen "Listen-ähnlichen" View von irgendwelchen Nodes haben möchtest.
    4. Out-of-the-Box dürfte dir das aber nicht viel bringen
  2. AwesomeJavaFX
    1. https://github.com/mhrimaz/AwesomeJavaFX
    2. kurrierte Liste von eventuell recht nützlichen Dingen (ich finde da ab und an mal was)
  3. e(fx)clipse
    1. Geboren als reines Plugin für Eclipse, um JavaFX gut zu integrieren.
    2. Als ich noch ein reiner Eclipse-Nutzer war, war das mein Go-to
    3. Aber: Bietet auch Libraries, die dir helfen könnten
Der e(fx)clipse-Entwickler hat auf JavaFX mal begonnen Code-Editoren zu schreiben. Das könnte dir als Einstieg dienen:
https://tomsondev.bestsolution.at/2014/12/27/displaying-and-editing-large-styled-texts/
-> Alt! Aber ich vermute, er arbeitet daran weiter.
-> schau dir mal das Repo an:
https://github.com/eclipse-efx
https://github.com/eclipse-efx/efxclipse-rt
https://github.com/eclipse-efx/efxclipse-rt/tree/master/modules/ui/org.eclipse.fx.ui.controls (mal auf Maven schauen, könntest du etwas finden) -> hier ist auch StyledText (NG) enthalten.

Generell auf Twitter mal @tomsontom @dlemmermann @hansolo_ @gluon @hendrikEbbers ... folgen
Auf StackOverflow war "jewelsea" nen rechter Guru.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Canvas oder Polygone? AWT, Swing, JavaFX & SWT 3
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
dereki2000 AWT Canvas zeichnet nicht AWT, Swing, JavaFX & SWT 7
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
Prafy AWT Klickbare Bereiche auf Canvas AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
L JavaFX Canvas max size? AWT, Swing, JavaFX & SWT 1
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
C Java FX Canvas missing getGraphicContext2D AWT, Swing, JavaFX & SWT 5
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
Luk10 KeyBindings mit Canvas? AWT, Swing, JavaFX & SWT 3
B LookAndFeel GWT: Canvas in TabSet nicht sichtbar AWT, Swing, JavaFX & SWT 2
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
T Canvas clipping AWT, Swing, JavaFX & SWT 4
S 2 Canvas übereinander AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
M Wofür Canvas? AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
2 AWT Zeichnen in Canvas AWT, Swing, JavaFX & SWT 5
B 2D-Grafik Malen/übermalen mit Canvas AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
G Auf Canvas zeichnen nur über boolean-Abfragen? AWT, Swing, JavaFX & SWT 5
S Canvas-Inhalt in Laufzeit ändern AWT, Swing, JavaFX & SWT 6
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
T AWT canvas AWT, Swing, JavaFX & SWT 3
P Canvas: String wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
H Zeichnen auf smartgwt Canvas AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
K Swing Sinuskurve zeichnen auf Canvas AWT, Swing, JavaFX & SWT 2
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
D Canvas soll angezeigtes jpg-Bild aktualisieren AWT, Swing, JavaFX & SWT 4
N zeichnen auf awt canvas AWT, Swing, JavaFX & SWT 9
G Ein Wort in einem String färben in einer Canvas AWT, Swing, JavaFX & SWT 10
J Canvas Inhalt als Bild speichern! AWT, Swing, JavaFX & SWT 16
T zeichnen mit canvas AWT, Swing, JavaFX & SWT 3
S repaint im Canvas AWT, Swing, JavaFX & SWT 3
D Canvas und Buttons AWT, Swing, JavaFX & SWT 20
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
C canvas.draw zeichne ohne ausfüllen AWT, Swing, JavaFX & SWT 9
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
T Canvas gegen Container austauschen --> GUI fehlt AWT, Swing, JavaFX & SWT 4
P Canvas Inhalt löschen AWT, Swing, JavaFX & SWT 4
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
F ToolTip auf Canvas AWT, Swing, JavaFX & SWT 2
L Probleme mit mehreren Canvas: Überlagerungseffekte? AWT, Swing, JavaFX & SWT 5
N Zu hoher Speicherverbrauch beim Zeichnen (Canvas) AWT, Swing, JavaFX & SWT 5
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
T Textfeldwert in canvas AWT, Swing, JavaFX & SWT 4
D cannot access Canvas AWT, Swing, JavaFX & SWT 13
G Canvas in SWT aktualisieren AWT, Swing, JavaFX & SWT 21
S AUF Canvas Zeichnen Fehler! AWT, Swing, JavaFX & SWT 10
G Canvas löschen AWT, Swing, JavaFX & SWT 15
H Sowas wie ein Canvas AWT, Swing, JavaFX & SWT 3
D Inhalt einer Canvas löschen (SWT.NO_BACKGROUND gesetzt) AWT, Swing, JavaFX & SWT 3
G GridBagLayout mit Canvas-Positionsproblem AWT, Swing, JavaFX & SWT 5
J Canvas und JTextField AWT, Swing, JavaFX & SWT 2
T erkennen ob innerhalb oder außerhalb von canvas gezeichnet AWT, Swing, JavaFX & SWT 2
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
P Tranparentes Canvas AWT, Swing, JavaFX & SWT 8
P Inhalt eines Canvas verkleinern AWT, Swing, JavaFX & SWT 3
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
M Codeteilung -> Canvas zeichnet nicht mehr AWT, Swing, JavaFX & SWT 40

Ähnliche Java Themen

Neue Themen


Oben