2015-03-20 9 views
16

Mein Java Swing-Anwendungsfenster verschwindet, wenn ich es mit der Maus von einem Monitor zum anderen ziehe. Es ist sichtbar, während ich es ziehe, aber es verschwindet sofort, wenn ich die Maustaste loslasse. Lieber würde das Fenster nicht verschwinden. Warum verschwindet es?Das Java Swing-Anwendungsfenster wird ausgeblendet, wenn es unter Mac OS X auf einen anderen Bildschirm/Desktop/Bildschirm verschoben wird

Wenn ich Mission Control aktiviere, erscheint das Swing-Fenster am unteren Rand des Desktops, wo ich es gezogen habe. Durch Deaktivieren der Missionskontrolle gleitet sie vom unteren Bildschirmrand.

Es spielt keine Rolle, welche Java Swing-Anwendung ich ausführe. Für diejenigen, die den Code wollen, hier ist eine einfache Java-Swing-Anwendung, die das Verhalten zeigt, die ich beschreibe, genießen:

import java.awt.*; 
import javax.swing.*; 

class SimpleSwing { 
    public static void main(final String... args) { 
     SwingUtilities.invokeLater(new Runnable() { 
       @Override public void run() { 
        JFrame frame = new JFrame(); 
        JPanel contentPane = new JPanel(); 
        contentPane.add(new JLabel("Hello World!")); 
        frame.setContentPane(contentPane); 
        frame.pack(); 
        frame.setVisible(true); 
       } 
      }); 
    } 
} 

Meine Umgebung ist Oracle Java JDK (letzte zum Zeitpunkt des Schreibens) auf Mac OS X Yosemite (spätestens zum Zeitpunkt des Schreibens):

java version "1.8.0_40" 
Java(TM) SE Runtime Environment (build 1.8.0_40-b27) 
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode) 

OS X Yosemite Version 10.10.2 (14C1510) 
Darwin Kernel Version 14.1.0 
+2

Hat der zweite Monitor einen großen y-Versatz? Ich hatte Probleme mit Swing mit JDK 7/8, als die "y" -Koordinate meines zweiten Monitors relativ zu meiner ersten negativ war. – prunge

+0

Das ist ein Hinweis! Ich ordnete die Monitore in einer Anordnung nebeneinander und nicht von oben nach unten an und ich kann das Fenster wie erwartet über die Bildschirme ziehen! Ein interessanter Aspekt der Top-Bottom-Anordnung ist, dass, sobald ich versuche, das Fenster auf einen anderen Desktop zu ziehen, das Fenster für immer verschwunden ist. Ich kann Mission Control aufrufen und das Fenster auf den anderen (ursprünglichen) Desktop ziehen, aber es wird auch vom Bildschirm "sinken". Ich frage mich, ob es dafür einen Workaround gibt ... –

+0

Das gleiche Problem - yworks yed (eine normale Java-App) wird auf dem Display meines Laptops erscheinen, aber wenn ich versuche, es auf einen externen Monitor zu ziehen, wird POOF! Weg. Macht mich verrückt. –

Antwort

1

Versuchen Sie folgendes:

  1. zum Systemeinstellungen> Displays> Arrangement
  2. Align Siehe die beiden Rechtecke perfekt
  3. wenn es
  4. Wenn nicht, ändern Sie die Reihenfolge der zwei Rechtecke funktioniert (und die Monitore oder stecken Sie sie in unterschiedlich)

hoffe, das hilft, aber ich bin nicht sicher, wenn es die Lösung ist.

1

Schritt: vor frame.setVisible (true); Sie können unter zwei Zeilen Code hinzufügen und dann erneut testen.

frame.setLocation (500, 500); frame.setAlwaysOnTop (wahr);