Rendering Swing jest uszkodzony w JDK 1.8, poprawny w JDK 1.7
Zainstalowałem IntelliJ IDEA (13.1.1 #IC-135.480) i JDK 1.8.0 (x64) i wygenerowałem trochę GUI z GUI Form designer.
Potem uruchomiłem kod i zdałem sobie sprawę, że coś jest nie w porządku.
Oto zrzut ekranu mojego GUI:
Renderowanie czcionki wydaje się nie być w porządku. Dodatkowo przycisk traci swój tekst, gdy przesuwam mysz nad nim.
Więc zainstalowałem JDK 1.7.0_40 (x64), przekompilowałem projekt i uruchomiłem go ponownie.
The pojawia się następujący formularz, gdy używam JDK 1.7:
Renderowanie wydaje się być w porządku, a przycisk jest również w porządku.
Więc zainstalowałem najnowsze sterowniki grafiki i chipsetu i wiele więcej, ale problem nadal istnieje. Czy kiedykolwiek miałeś takie problemy z Java Swing UIs? Pomożesz mi rozwiązać moje problemy? Każda pomoc będzie bardzo mile widziana.
Aktualizacja:
Stworzyłem mały projekt z tylko 1 JTextArea i 1 JButton i mam ten sam rendering problemy.
Według Andrew Thompsona zmieniłem setSize () i zaczynam od EDT. Przykład poniżej:
package at.maeh.java.client.simpleTextClient;
import javax.swing.*;
import java.awt.*;
public class SimpleClient extends JFrame {
private JPanel panel1;
private JTextArea textArea1 = new JTextArea();
private JButton button1 = new JButton();
public SimpleClient() {
super("SimpleClient");
// Panel
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
// BUtton
button1.setText("TestButton");
// TextArea
textArea1.setColumns(40);
textArea1.setRows(15);
// Add Components
panel1.add(textArea1);
panel1.add(button1);
// Add to Frame
this.getContentPane().add(panel1);
// pack and set Visible
pack();
setVisible(true);
System.out.println("Constructor EDT: " + SwingUtilities.isEventDispatchThread());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleClient::new);
System.out.println("Main EDT: " + SwingUtilities.isEventDispatchThread());
}
}
Rezultatem jest prosty JFrame z komponentami w nim.
Kiedy piszę jakiś tekst lub moove my mousePointer nad przyciskiem komponenty są renderowane w ten sposób (Text: testsentence.123; Button-Label: TestButton)
8 answers
Dla tych, których problem nie został rozwiązany; spróbuj tego rozwiązania:
Ustaw globalną zmienną środowiskową "J2D_D3D" na "false" wewnątrz systemu operacyjnego. Według Sun, to ustawienie jest używane do wyłączenia korzystania z Direct3D w Javie 1.4.1_02 i nowszych.
Ie: po prostu Utwórz zmienną środowiskową o nazwie "J2D_D3D" i wartości "false" bez cudzysłowów.
To rozwiązało moje problemy z renderowaniem, mam nadzieję, że Twoje również.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-28 14:00:47
W końcu znalazłem rozwiązanie mojego problemu. Musiałem zmienić ustawienia kontroli energii w moim NVIDIA GeForce 620M do maksymalnej wydajności.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 16:11:01
Możesz wykonać następujące kroki:
- Kliknij prawym przyciskiem myszy na pulpicie i kliknij Panel sterowania NVIDIA
- Wybierz "Zarządzaj ustawieniami 3D" w lewym okienku
- Wybierz zakładkę "Ustawienia programu" w głównym oknie
- Kliknij "Dodaj"
- Przejdź do folderu java (C:\Program Files \ Java \ jre1. 8. 0_20 \ bin) i wybierz javaw.exe i naciśnij "Otwórz" (ten krok prawdopodobnie zależy od systemu operacyjnego, ale powinien być dość łatwy do znalezienia)
- Gdzie jest napisane ' Wybierz preferowany procesor graficzny dla tego programu "kliknij rozwijaną listę i wybierz" wysokowydajny procesor NVIDIA "
- Kliknij "Zastosuj" w prawym dolnym rogu i możesz zaczynać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-04 17:34:11
Mam dokładnie ten sam problem. Co znalazłem po ustawieniu jakości duffys:
Mój Notebook obsługuje zarówno Intel HD 4000, jak i NVS 5200M. uruchamianie aplikacji Swing z Javą 7 jest dobre na obu kartach. Z Java 8 Swing GUI renderowane przez kartę Intela (bez względu na ustawienia jakości) wyglądają zgnieciony (jak w Duffys Screenshot), przy użyciu NVS 5200M wyglądają tak, jak kiedyś.
Nie można znaleźć nic na java bug tracker, z drugiej strony trudno to opisać bug.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-02 15:16:52
textArea1.setSize(500, 300);
Jest problem. GUI Javy mogą działać na wielu platformach, w różnych rozdzielczościach ekranu i przy użyciu różnych Plafów. Jako takie nie sprzyjają one dokładnemu rozmieszczeniu lub wymiarowaniu składników. Aby zorganizować komponenty dla solidnego GUI, zamiast tego użyj menedżerów układu lub ich kombinacji 1, wraz z wypełnieniem i obramowaniami układu dla white space2.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:02
Dell Vostro 5480 z ubuntu mate 16.04 miałem podobny problem. Naprawiono zmianę sterownika Nvidia, używając dodatkowego sterownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 09:51:43
Podobne poprawki do duffy356:
Lenovo T430s z systemem Windows 7 64 bit z NVIDIA NVS 5200M obok HD 4000. Aktualizacja do Java 8 update 5 stworzyła grafikę i uszkodzenie przycisków dla dwóch aplikacji Swing, jEdit i Freemind.
Używanie apletu Panelu sterowania NVIDIA do zmiany ustawień globalnych trybu zarządzania zasilaniem na "preferuj maksymalną wydajność" wygląda na to, że Naprawiono ten problem.
Nie wiem, czy nie ma problemu z ustawianiem rozmiarów aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-07 12:18:19
Kroki:
- Panel sterowania
- system i bezpieczeństwo
- system
- Ustawienia zdalne
- Zakładka zaawansowana
- Kliknij zmienne środowiskowe
- Utwórz zmienną J2D_D3D
- i ustaw wartość na false.
Pracował dla mnie,....
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-10 00:18:51