Probleme mit Java Swing unter Mac OSX

Status
Nicht offen für weitere Antworten.
D

dvid85

Gast
Hallo,
ich hab ein Java Programm mit Swing Oberfläche geschrieben und es gibt anscheinend Mac-Java spezifische Probleme. Wenn ich einen Dialog öffne, z.b. Confirm, Open oder Save, dann verschwinden alle Componenten darauf. Ich sehe nur den default-makierten Button. Auch wenn ich das Main-Frame minimiere und wieder maximiere verschwinden alle Componenten darauf.
Auf Win und Linux ist das mit meinem Prog nicht so.
Für das maximieren hab ich schon eine Lösung gefunden: es gibt einen WindowStateListener, da schreibe ich einfach ein repaint() für das ganze Fenster rein.
Jedoch, wie gesagt, bei anderen Betriebssystemen ist das nicht nötig.

Die Dialoge krieg ich einfach nicht vollständig sichtbar. Kennt jemand das Problem auch? Gibt es eine Lösung?

Bitte auch ruhig antworten, wenn ihr diese Probleme nicht habt. Denn müsste ich vielleicht mal meine Java-Installation überprüfen. Obwohl, ich habs auf 3 verschiedenen Macs ausprobiert, immer das gleiche.

Gruß
David
 

Ebenius

Top Contributor
Liegt wahrscheinlich daran, dass Du auf Linux und Windows Metal benutzt und auf dem Mac das Mac L&F. Letzteres geht besonders mit setOpaque(true) auf Windows/Frames/Dialogs ordentlich anders um. Das würde ich als allererstes prüfen.

Ebenius
 
D

dvid85

Gast
Ich bin kein wirklich erfahrener Programmierer. Ich denke ich habe nicht expilizit Look & Feel genutzt. Hab nur swing sachen importiert und keinerlei Sachen auf true oder false gesetzt. Was macht setOpaque()? ich habe es auf den besagten Componenten mit true und false ausprobiert, ändert nichts.
Mir ist aber aufgefallen, dass das Verschwinden erst mit zunehmender Komponentenanzahl auftritt. Als das Main-Frame noch völlig leer war, war beim close-Dialog noch alles da.
 

Ebenius

Top Contributor
dvid85 hat gesagt.:
Ich bin kein wirklich erfahrener Programmierer. Ich denke ich habe nicht expilizit Look & Feel genutzt. Hab nur swing sachen importiert und keinerlei Sachen auf true oder false gesetzt. Was macht setOpaque()? ich habe es auf den besagten Componenten mit true und false ausprobiert, ändert nichts.
Mir ist aber aufgefallen, dass das Verschwinden erst mit zunehmender Komponentenanzahl auftritt. Als das Main-Frame noch völlig leer war, war beim close-Dialog noch alles da.

Das klingt sehr sonderbar. Natürlich hast Du nicht explizit ein Look & Feel gesetzt. Auf dem Mac hast Du ganz automatisch das Mac L&F, solange Du nix setzt. Und das ist ein bisschen anders als Metal.

setOpaque(boolean) legt fest, ob eine Komponente keinen transparenten Hintergrund hat (klingt blöd, man kann auch sagen, ob sie "dicht" ist, was auch blöd klingt). Wenn damit rumspielen nix gebracht hat, wird's wohl nicht daran gelegen haben.

Speck doch mal Deinen Source-Code soweit ab wie möglich; so dass das Problem noch existiert. Dann einfach posten. Dann schaumermal.

Gruß, Ebenius
 
D

dvid85

Gast
Ich habe nochmal etwas probiert:
Auf meinem Main-Frame habe ich zur Strukturgestaltung eine Box (background) gesetzt und darauf mehrere weitere Boxen. wenn ich background.setVisible(false) setze, dann verschwindet dieser auch wirklich und die Dialoge sind plötzlich sichtbar. Scheint mit den Komponenten auf dem Main-Frame zu tun zu haben.
Weiß jetzt vielleicht jemand ne Lösung?
 
D

dvid85

Gast
Nun ja, ich weiß nicht so recht was ich da posten soll. Das Prog hat mittlerweile über 5000 zeilen.

es sieht ungefähr so aus:

Code:
 //... hauptMethode

                final JFrame mainFrame = getMainFrame();
		
		// Container
		background = Box.createVerticalBox();
		Box row1 = Box.createHorizontalBox();
		Box row2 = Box.createHorizontalBox(); 
		Box nextToOsc2 = Box.createVerticalBox();
		Box forInfo = Box.createHorizontalBox();
		Box lfos = Box.createHorizontalBox();
		Box envelopes = Box.createHorizontalBox();
		Box forAmp = Box.createVerticalBox();
		forAmp.setPreferredSize(new Dimension(200,350));
		forAmp.setMaximumSize(new Dimension(200,350));

//...viele weitere container

Code:
	public JFrame getMainFrame(){
		final JFrame mainFrame = new JFrame("Rack Attack SysEx Editor");
		mainFrame.setSize(1020, 700);
		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainFrame.setJMenuBar(getMenu());
		mainFrame.setResizable(false);
		mainFrame.setLocationByPlatform(true);
		mainFrame.addWindowStateListener(new WindowStateListener(){

			public void windowStateChanged(WindowEvent e) {  // das hab ich wegen dem Maximieren gemacht
				background.repaint();
				menu.repaint();
			}	
		});
		return mainFrame;
	}

und vielleicht noch einen Dialog:
Code:
		//open
		final JFileChooser fcOpen = new JFileChooser();
		fcOpen.setMultiSelectionEnabled(false);
		fcOpen.setFileFilter(new FileFilter(){
			@Override
			public boolean accept(File f) {
				return f.isDirectory() || f.getName().toLowerCase().endsWith(".ras") || f.getName().toLowerCase().endsWith(".rab");
			}
			@Override
			public String getDescription() {
				return "Rack Attack Sound-File";
			}
		});
		open.setActionCommand("open");
		open.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {
				background.setVisible(false);    // Notlösung
				int returnVal = fcOpen.showOpenDialog(null);
				background.setVisible(true);    // Notlösung
//......

ich glaub nicht, dass ich groß was falsch gemacht habe. es kann höchstens sein, dass irgendwelche Components irgend eine setMethode brauchen oder an gewissen stellen vielleicht repaints(). Keine Ahnung, hab eigentlich schon viel probiert.
Meine Notlösung wäre jetzt, dass ich wie unten makiert vor öffnen den background aisblende und dann wieder einblende. Dann sind die Dialoge sichtbar, aber das ist ja auch nicht unbedingt Sinn der Sache.
 
D

dvid85

Gast
ja. ich hatte es zum anfang rezisable. dann beim minimieren und wieder maximieren ist alles verschwunden. wenn ich dann das fenster größer oder kleiner gezogen hab ist alles wieder gekommen. das komische ist ja, dass es nur aufm mac nicht geht. ich hab auch schon versucht andere java compiler zu benutzen, erfolglos.
 

Ebenius

Top Contributor
Ich kann's mit meinen Programmen auf nem Mac OS-X Java 1.5.0_16 nicht nachvollziehen.

Kannst Du auf einer der Kisten mit Eclipse* arbeiten? Wenn ja, setz Dir einen Breakpoint in Window.processEvent(AWTEvent) an das WINDOW_STATE_CHANGED case-Label. Und dann quäl Dich durch.

// EDIT: * oder welche IDE auch immer Dir gefällt...

Viel Erfolg!
 
D

dvid85

Gast
danke für deine hilfe, aber ich glaube das bringt alles nichts. hab jetzt ein paar tricks eingebaut mit denen es funktioniert. ist etwas unschön, aber naja.. hauptsache der user merkt es nicht.
hoffe nur, dass es jetzt auf anderen plattformen auch funktioniert.
 
D

dvid85

Gast
achja, falls jemand die gleichen probleme hat, bitte melden. ich würde denn meine tricks posten
 

Hollebolle

Mitglied
Hallo dvid85,

ich habe genau die gleichen Probleme, auf Windows und Linux läuft es, aber unter Mac OS X gibt es die von dir beschriebenen Probleme. Kannst Du mir deine Tricks nennen?

Grüße
 

Hollebolle

Mitglied
Jetzt habe ich selbst noch ein wenig herumprobiert, und es geht jetzt recht zufriedenstellend.

Ich habe dem JFrame einen WindowListener und WindowStateListener spendiert.

In den zugehörigen Methoden windowOpened und windowStateChanged mache ich auf alle JPanels der contentPane ein repaint().

Viele Grüße
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
L Probleme mit java.awt.print.book AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
P JFrame Location-/Size-Probleme AWT, Swing, JavaFX & SWT 5
U LayoutManager Probleme mit Layouts AWT, Swing, JavaFX & SWT 5
C 3 kleine Probleme... AWT, Swing, JavaFX & SWT 13
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
M Probleme mit Verkleinern eines GUI AWT, Swing, JavaFX & SWT 7
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
T JTable Graphik probleme AWT, Swing, JavaFX & SWT 3
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
P Probleme mit setIconImage AWT, Swing, JavaFX & SWT 8
U Swing Probleme mit Asynchronen Prozessen und Swing: AWT, Swing, JavaFX & SWT 3
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
L Probleme mit JPanel AWT, Swing, JavaFX & SWT 8
D Probleme bei Übertrag von ArrayList in Jtable AWT, Swing, JavaFX & SWT 2
G kleinere Probleme mit GUI AWT, Swing, JavaFX & SWT 2
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
J GUI-Aktualisierungs-Probleme AWT, Swing, JavaFX & SWT 4
B Performance-Probleme AWT, Swing, JavaFX & SWT 17

Ähnliche Java Themen


Oben