2013-12-14 17 views
9

Opublikował również na coderanch.com.JFrame zawiesza się w systemie Windows 8.1 po zmianie rozmiaru

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); 
      } 
     }); 
    } 
} 

Problem dotyczący zmiany rozmiaru ramki JFrame.

Jak to wygląda domyślnie tuż po uruchomieniu programu:

enter image description here

Kiedy próbuję zmienić rozmiar to jak pokazano na zdjęciu i przesuń wskaźnik myszy do górnej części ekranu (jak na zdjęcie poniżej) widzę to:

enter image description here

Kiedy zwolnieniu przycisku myszy ramka jest zmieniany, ale nie odpowiada. A na nim jest czarna przestrzeń. Jak to wygląda:

enter image description here

Dzieje się w systemie Windows 8.1 i Java 1.7.0_45 (zdarza się na Windows 7).
Problem nie występuje podczas korzystania z innych sposobów zmiany rozmiaru ramki w systemie Windows.
Dzieje się tak tylko wtedy, gdy "Pokaż zawartość okna podczas przeciągania" jest aktywne w ustawieniach systemowych.
Dlaczego to się dzieje?
Jak to naprawić?

+0

Spróbuj zmienić 'frame.setVisible (true);' na 'frame.pack(); frame.setVisible (true); '.. –

+0

@AndrewThompson bez zmian. –

+0

Jestem użytkownikiem Blue (jeden z pre_relade), ale nigdy nie widzę, że – mKorbel

Odpowiedz

0

mam Windows 7 z jdk1.7.0_25 i kod pracował dobrze dla mnie
mam 3 Rozwiązanie:
1-myślę, że Oracle jest źle w zaktualizowanej 45 można zastąpić 45 z 25
2-każdy graficzny interfejs użytkownika w java korzysta z systemu operacyjnego i może Windows 8 nie jest zgodny z Javą 7, ale 3-można dodać detektora do zmiany rozmiaru ramki i odświeżania połączenia(); w ciele słuchacza lub w ustalonej wielkości do rzeczywistego rozmiaru
również można spróbować za pomocą setUndecorated (true) oraz niestandardową słuchacza myszy, która implementuje rama rozmiar

+1

Nie mam teraz dostępu do maszyny Win 7, więc nie mogę tego sprawdzić. Dodałem detektor na zmianę rozmiaru ramki i wywoływam go w nim odświeżeniem. Nie pomogło. Co gorsza, wydaje się, że słuchacz w ogóle nie został zwolniony podczas zmiany rozmiaru! (Mam na myśli w tej części po zwolnieniu myszy i ramie rozciągającej się na całej wysokości ekranu) –

+0

jest dziwny !! możesz pobrać jdk 7 u 25 i spróbować ponownie. jakie jest twoje IDE? i jak uruchomić ten kod? działa na IDE lub w CMD? –

+1

Używam Intellij IDEA Community Edition 13.0. Kiedy uruchamiam to przez linię cmd, nie ma żadnych zmian. –

3

To brzmi jak dużo błędów zgłaszane here. Powinien być naprawiony w JDK8 i 9, a zgodnie z trackerem problemów poprawka jest przenoszona do wersji 7u80.