Canvas-Klasse : Aufruf von deren Methoden aus anderen Methoden OHNE Grafik-Kontext

wolf_703

Aktives Mitglied
hallo,

ich baue mir zum Spielen einen Loksimulator, Basis sind Fotos aus dem Cabride mit einer modernen E-Lok z.B. BR101 oder BR120
Da gibt es noch einige Rundinstrumente..deren Darstellung natürlich einen Grafik-Kontext z.B. mit CANVAS erfordert.

Das darzustellen war kein Problem, aber den Zeiger will man ja bewegen können !
Die Bewegung soll aufgrund von Einstellung eines Reglers (Slider) erfolgen, das ist bisher in einem JPanel möglich.

Aber wie kann ich jetzt den Zeiger im Canvas-Panel mit einem Funktionsaufruf auf einem NON-Graphics-Panel aufrufen ?

Hier mal n Scrrenshot des Führerstandes..
 

Anhänge

  • Cabride_IC_BR120_1.png
    Cabride_IC_BR120_1.png
    1,6 MB · Aufrufe: 0

Blender3D

Top Contributor
Aber wie kann ich jetzt den Zeiger im Canvas-Panel mit einem Funktionsaufruf auf einem NON-Graphics-Panel aufrufen ?
Indem dein "Canvas-Panel" eine public Medthode z.B.
Java:
void setPositionZeiger( double value  ){ .. }
zur Verfügung stellt. Der "NON-Graphics-Panel" kann dann damit deinen "Canvas-Panel" aufrufen.

Grundsätzlich solltest du jedoch die Daten und die Darstellung trennen. Das bedeutet, die Geschwindigkeit, die Position, das Gewicht ... etc. des Zuges befinden sich in einem eigenen Objekt. Das Objekt das für die Darstellung zuständig ist benutzt dann dieses Objekt entweder direkt oder indirekt für die Generierung des Bildes.
du verwendest SWING für die Darstellung. Wenn du jetzt z.B. dein Programm auch für Andorid oder andere Systeme zur Verfügung stellen möchtest und keine Trennung zwischen Darstellung und Daten in deinem Code gemacht hast wird es schwierig, deinen Code weiter zu benutzen. In Android importierst du andernfalls deine Datenklassen und brauchst dich dann lediglich um die neue Darstellung zu kümmern.
 

wolf_703

Aktives Mitglied
nabend,
erstmal vielen Dank !
ich hab das schon mal so versucht..aber da hat sich nix gerührt--evtl anderer Denk(?)Fehler..

arbeite hier mit IntelliJ community-edition..biete ja schon viel Hilfen !

muß ich da was mit runnable o.ä. machen ?
 

Jw456

Top Contributor
Dann zeige das doch mal wie du das machst. Wenn du es genau wie in deinen Flugsim machst wundert es ich nicht.
Konrad hatte dir das auch an Anfang drauf hin Gewissen.
 

wolf_703

Aktives Mitglied
sorry, weiß nicht , was du da genau meinst..beim Slider z.B. hab ich doch Events wie auch bei den Buttons, checkboxes usw. !?

ich schieb hier mal alle relevanten projektdateien rein..wer lust hat sich da durchzuhangeln ...

heut schnall ich eh nix mehr..guts nächtele
 

Anhänge

  • loksim_komplett.zip
    23,9 KB · Aufrufe: 0

wolf_703

Aktives Mitglied
p.s. : beim flug sim läuft ja viel mehr input über die hardwareschiene resp arduino-übergabe..

events lassen sich bei rail qualifizierter darstellen : signal auf rot,regen,bahnhofshalt..siehe dazu die
mit der zeit weiterschaltende fahrplan-anzeige
so sehe ich beim loksim mehr spielmöglichkeiten - unabhängig davon, ob man Geschwindigkeit, Bremse
und die checkboxes auch vom arduino mittels potentiometer und taster/schalter versorgt..

z.B. hat man beim kick-button die totmann -mimik und bei fehlender scheibenwischer -aktion
würden signale farblos dargestellt, sodaß man mangels eigener aktion
zwangsgebremst wird.. folge : minuspunkte
oder fahrtende=spielende...

irgendwas mit android ist Nicht vorgesehen !
 

wolf_703

Aktives Mitglied
moin,
zu Blender3D :
Java:
zur Verfügung stellt. Der "NON-Graphics-Panel" kann dann damit deinen "Canvas-Panel" aufrufen.
genau dann kriege ich die Meldung, daß der Graphics-Kontext null ist ...und auch wenn ich den Canvas aus einem anderen CANVAS aufrufe,
kommt keine Reaktion des Zeigers !
Blöd ist, daß es keine Mehrfachvererbung bei JAVA gibt :
ich kann also nicht schreiben :
Code:
public class <ebbes> extends JPanel extends CANVAS
d.h. eine nutzbare Kombination aus JPanel und CANVAS gibt es nicht !?

beim Flugsim hab ich ja NUR Graphics-Kontext und keine GUI wie SWING..

evtl könnte man erwägen, z.B. g.rectangle um einen Event-Handler zu ergänzen, also quasi ne SWING-ähnliche GUI
im Graphics-Kontext zu bauen..was ein Aufwand !

Muß mich fragen, ob für meine hobby-orientierte Programmierung von technischen Displays wie Rundinstrumente
nicht ein C-Derivat geeigneter ist..so ganz fremd ist mir C ja nicht, soll heute auch brauchbare GUI-Bibliotheken haben
und Mehrfachvererbung erlauben.

Im professionellen Bezahl-Umfeld gibt es da ja einiges, aber für "arme Rentner" ?
 

Jw456

Top Contributor
Du machst im Großen und Ganzen immer noch den gleichen Fehler wie am Anfang.
Event basierend ist das nicht.

Du versuchst in der Main deine Zeiger mit den grafischen Radius Methoden zu Zeichnen.
Falsch.
Ein zeichnen gehört in die Klasse wo du auch denn Graphik Kontext hast. Nicht in die Main.

In der Main kannst du nach dem du die werte zb für den Druck verändert sind, ein neu Zeichen anstoßen. Du hast es ja sowieso alles
static in der Main.

Event heißt hallo Druckluft du hast neue Werte zeichne dich bitte neu.

PS ich habe deinen Code nur flüchtig angeschaut aber was schon mal für mich auch unsinnig ist in einem Timer in der Run zu warten. Ist doch gegen alles . Das zeigt das du das Prinzip noch nicht verstanden hast.
 

Jw456

Top Contributor
Aber wie kann ich jetzt den Zeiger im Canvas-Panel mit einem Funktionsaufruf auf einem NON-Graphics-Panel aufrufen ?
In dem du ein Neuzeichnen des Grafik Element aufrufst zb mit glaube das war repaint .
Die paint Methode darfst du nicht selber aufrufen. Das ist eine CallBack Methode von Swing.
Der Aufruf hat aber nichts in der Point Methode zu suchen so wie du es in deinen Flugsim falsch machst.

Beim JSlider hast du ja auch setValue(int) zum bewegen Werte/übergeben.


Auch sehe ich hier Probleme da du aus der Paint eine statische Methode aus der Main aufrufst. Dieselbe rufst du ja auch aus den andern Paint Methoden auf. Da wirst du zeitliche Probleme bekommen.

Blöd ist, daß es keine Mehrfachvererbung bei JAVA gibt :
es gibt aber Intefaces
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
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
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
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
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

Ähnliche Java Themen


Oben