2016-03-28 12 views
0

Ich habe eine Java-Anwendung, die aus 2 JFrames besteht. Eins wird nur für eine Vorschau verwendet und enthält eine benutzerdefinierte JComponent. Der andere Frame besteht aus mehreren Eingabefeldern, die die Ausgabe der Vorschau steuern.Java JFrame nicht aktualisiert unter Mac OSX

Ich habe Aktion Hörer für die verschiedenen Eingabefelder, die ein erneutes Zeichnen des benutzerdefinierten JComponent

previewRenderer.update(previewRenderer.getGraphics()); 

mit Gewalt, wo die previewRenderer ist der Brauch JComponent auf der anderen JFrame.

Dies funktioniert gut unter Linux & Windows, aber auf Mac OSX der 2. JFrame wurde überhaupt nicht aktualisiert.

Ich habe keine OSX-Maschine zum Testen zur Hand, aber wie kann ich eine Neuzeichnung des anderen Frames bzw. der benutzerdefinierten JComponent erzwingen?

Danke in advace.

+0

Es könnte ein Thread-Problem sein. Stellen Sie sicher, dass der gesamte Code, der die Ansicht berührt, im Ereignisversand-Thread ausgeführt wird? – BPS

Antwort

2

Versuchen Sie,

previewRenderer.repaint() 

oder vielleicht sogar

previewRenderer.repaint() 
previewRenderer.revalidate() 

je nach Veränderung, welche Änderungen Sie in den Komponenten des Vorschaurahmen tun.

+0

Der PreviewRenderer-Component hat eine spezielle Malmethode, die aufgerufen werden muss. – xuma202

+0

Nicht sicher, wie Sie dies implementiert haben, aber diese Methoden rufen die entsprechenden Methoden auf, um das Malen/Neuzeichnen der gesamten Komponente zu erzwingen. Ich denke, es sollte funktionieren. Aber vielleicht hast du es schon versucht? – gustf

+0

Ja, es funktioniert unter Linux, aber ich kann unter Mac OS X noch nicht testen. Ich muss das auf Mac arbeiten. – xuma202

Verwandte Themen