2013-12-14 3 views
9

Auch auf coderanch.com.JFrame friert bei Windows 8.1 ein, wenn die Größe geändert wird

import javax.swing.*; 

public class Tmp { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame(); 
       frame.setSize(200, 200); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new JTextField()); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 

Ein Problem in Bezug auf die Größenänderung dieses JFrame.

Dies ist, wie es standardmäßig sieht direkt nach dem Programmstart:

enter image description here

Wenn ich versuche, es auf einem Bild zu sehen, um die Größe mag und einen Mauszeiger an die Spitze eines Bildschirms (wie auf verschieben Bild unten) ich sehe dies:

enter image description here

Wenn ich die Maus loslassen der Rahmen der Größe verändert wird, aber nicht mehr reagiert. Und da ist ein schwarzer Raum. Dies ist, wie es aussieht:

enter image description here

Dies geschieht unter Windows 8.1 und Java 1.7.0_45 (es kommt auch auf Windows 7).
Das Problem tritt nicht auf, wenn Sie andere Möglichkeiten zum Ändern der Größe eines Rahmens in Windows verwenden.
Es passiert nur, wenn "Fensterinhalt beim Ziehen anzeigen" in den Systemeinstellungen aktiviert ist.
Warum passiert es?
Wie kann das behoben werden?

+0

Versuchen Sie 'frame.setVisible (true);' in 'frame.pack(); frame.setVisible (true); '.. –

+0

@AndrewThompson keine Änderungen. –

+0

Ich bin Blue (aus einem der pre_releases) Benutzer, aber ich sehe das nie – mKorbel

Antwort

0

Ich habe Windows 7 mit jdk1.7.0_25 und Code arbeitete für mich als feine
ich habe 3 Lösung:
1-i denke Oracle in Aktualisierung von 45 falsch ist, dass Sie 45 mit 25
ersetzt werden 2-any grafische Benutzeroberfläche in Java verwendet von OS und vielleicht Windows 8 nicht kompatibel mit Java 7 noch 3-Sie können einen Listener für Frame-Größenänderung hinzufügen und repaint() aufrufen; im Körper der Zuhörer oder eingestellt Größe tatsächliche Größe
auch können Sie mit setUndecorated versuchen (true) und benutzerdefinierte Maus-Listener, die Rahmen

+1

Ich habe momentan keinen Zugriff auf die Win 7-Maschine, daher kann ich das nicht überprüfen. Ich habe Listener auf Frame-Größe hinzugefügt und Repaint darin aufgerufen. Hat nicht geholfen. Was noch schlimmer ist, es scheint, dass der Zuhörer während der Größenänderung überhaupt nicht ausgelöst wurde! (Ich meine in diesem Teil nach der Mausfreigabe und Rahmen überspannend über die volle Höhe des Bildschirms) –

+0

ist seltsam !! Sie können JDK 7 u 25 heruntergeladen und versuchen Sie es erneut. Was ist Ihre IDE? und wie wird dieser Code ausgeführt? auf IDE oder in CMD laufen? –

+1

Ich benutze Intellij IDEA Community Edition 13.0. Wenn ich das über die cmd-Zeile ausführe, gibt es keine Änderungen. –

3

Das klingt viel wie der Bug here berichtet die Größe implementiert. Angeblich in JDK8 und 9 behoben, und entsprechend dem Issue Tracker wird der Bugfix in Version 7u80 zurückportiert.

Verwandte Themen