Swing-rendering erscheint gebrochen in JDK 1.8, korrekte JDK 1.7
Habe ich installiert IntelliJ IDEA (13.1.1 #IC-135.480) und JDK-1.8.0 (x64) und ich erzeugt einige GUI mit dem GUI-Formular-designer.
Dann lief ich den code und realisiert, dass etwas nicht in Ordnung.
Hier ist ein Screenshot von meiner GUI:
Rendering der Schrift scheint nicht OK zu sein. Zusätzlich die Schaltfläche verliert den Text, wenn ich meine Maus über Sie.
So, ich installierte JDK 1.7.0_40 (x64), kompiliert das Projekt und es lief wieder.
Dem folgenden Formular angezeigt wird, wenn ich mit JDK 1.7:
Dem Rendering scheint OK zu sein und der Schalter ist auch OK.
So installierte ich die neueste Grafik-und Chipsatz-Treiber und vieles mehr, aber das problem besteht immer noch.
Hatten Sie jemals solche Probleme mit Java Swing UIs? Könnten Sie mir helfen, zu beheben meine Probleme?
Jegliche Hilfe würde sehr geschätzt werden.
UPDATE:
Habe ich ein kleines Projekt mit nur 1 JTextArea und 1 JButton und ich haben die gleiche rendering-Probleme.
Laut Andrew Thompson wechselte ich die setSize() und ich starten von EDT. Beispiel unten:
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());
}
}
Das Ergebnis ist ein einfaches JFrame mit den Komponenten.
Wenn ich Text Schreibe, oder moove mein Mauszeiger über der Schaltfläche die Komponenten gerendert wie dieser (Text: testsentence.123; Button-Label: TestButton)
Hallo, ich habe ein kleineres Projekt mit nur 1 TextArea und 1 Knopf und ich haben die gleichen Probleme. Ich Zip - Sie können es hier herunterladen: drive.google.com/file/d/0B4TRtWhseMOdSm1sVHd6eVhfR3M/...
Es wäre besser für Sie, um den code in die Frage selbst, für die Leichtigkeit, für alle Leser.
Ich denke, ein SSCCE ist das, was Vulkanier bedeutete, nicht eine zip-Datei mit dem gesamten Projekt. Der Grund ist, dann kann jeder kopieren Sie einfach unseren code und testen Sie es schnell.
Das rendering ist so weit/schlimm, dass ich würde wirklich hassen, tadeln (ein Beamter) JDK 1.8 release selbst - es sind viele tests (und beta-Tester) für die Java-SDKs/REs in diesen Tagen .. was passiert beim kompilieren gegen/mit dem Java-8-SDK außerhalb von IntelliJ? Wenn das die gleichen Probleme dann noch eine variable entfernt werden können und die IntelliJ-IDEA-tag, das sollte wirklich nicht Materie) können entfernt werden. Oder, wenn Sie ist ein problem mit der IDEE setup, dann erforscht werden kann, die in mehr Tiefe. Auch, was passiert, wenn die Ausführung von andere Java-Swing-Programme gegen JRE 8 an diesem system?
InformationsquelleAutor duffy356 | 2014-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für diejenigen, deren problem nicht behoben ist, versuchen Sie diese Lösung:
Setzen Sie die Umgebungsvariable "J2D_D3D" auf "false" innerhalb des OS.
Nach Sonne, diese Einstellung dient zum deaktivieren der Java-2D-system ist die Verwendung von Direct3D in Java 1.4.1_02 und später.
ie: einfach erstellen Sie eine Umgebungsvariable mit dem Namen "J2D_D3D" und Wert "false" ohne Anführungszeichen.
diese gelöst hat meine rendering-Probleme, hoffe, es geht Ihnen auch.
ja! Sie haben Recht, Wir können nicht erwarten, jedem Kunden, dies zu tun. es gibt zwei Lösungen, ab sofort, 1) entwickeln unsere Anwendungen/Programme mit dem jdk 1.7 2) legen Sie die Umgebungsvariablen während der installation/Ausführung des Programms/der Anwendung. werde ich update hier, wenn ich einen besseren Weg, dies zu tun.
Die Kommandozeilen-option
-Dsun.java2d.d3d=false
sollte auch funktionieren.Das half mir auch! Das Tue ich nicht-java-Programmierung, nur mit einigen applets. Und ich begann auch erleben, diese fiesen rendering-Fehler nach einem java-update.
Diese behoben das Problem für mich in AndroidStudio (IntelliJ) v1.4. (Sept. 28, 2015 release). Das blinken der I-Balken-cursor im editor machen würde, die Zeichen verschwinden und an mal der cursor nicht Rendern überhaupt. Auch habe ich noch die Umgebung var und dann neu gestartet AndroidStudio. Dank
InformationsquelleAutor 25mhz
Schließlich fand ich die Lösung für mein problem. Ich hatte zum ändern der Energie-Einstellungen meiner NVIDIA GeForce 620M) auf maximale Leistung.
ich dachte, es wurde auch festgestellt obwohl. Auch die flag -Dsun.java2d.d3d=false ist nicht eine Lösung für das eigentliche problem, dass die d3d-Implementierung buggy ist (afaik von Release 6 auf 8 schon).
InformationsquelleAutor duffy356
Können Sie befolgen Sie diese Schritte :
InformationsquelleAutor Lord ST
Ich habe genau das gleiche problem. Was ich gefunden habe nach duffys Qualität-Einstellung Einstellung:
Mein Notebook läuft auch ein Intel HD 4000 und einer NVS 5200M. Ausführen von Swing-Anwendungen mit Java 7 ist in Ordnung, auf den beiden Karten. Mit Java 8 Swing GUIs gerendert, die von der Intel-Karte (unabhängig von der Qualität der Einstellungen) schauen zerbröselt (wie in duffys Screenshot), mit der NVS 5200M Sie sehen aus wie früher.
Konnte nichts finden auf der java-bug-tracker, auf der anderen verfügen, ist es schwer zu beschreiben, dieser bug.
InformationsquelleAutor nbred
Gibt es ein problem. Java-GUIs haben könnte, die arbeiten auf einer Vielzahl von Plattformen, die auf verschiedenen Bildschirm-Auflösungen & mit verschiedenen PLAFs. Als solche sind Sie nicht förderlich für die exakte Platzierung oder Dimensionierung von Komponenten. Organisieren Sie die Komponenten für eine robuste GUI, statt mit layout-Managern oder Kombinationen von Ihnen1, zusammen mit layout-Polsterung & Grenzen für white space2.
"Weil es funktioniert für andere Benutzer (siehe Kommentare oben)." ja, ich sah schon. Das bedeutet nichts, und ist in der Tat eines der häufigsten Anzeichen der expliziten Einstellung Größen - für eine Maschine gut, fehlschlägt, auf andere. Post code, der nicht Größen, die verwendet
pack()
und startet die GUI auf dem EDT. Ansonsten, dieses Q&Eine sinnlose Verschwendung von Zeit.Hi, ich aktualisierte meine Frage - Jetzt habe ich mit pack() und starten von EDT, aber ich habe das gleiche problem.
WTF, warum die -4 nach unten Stimmen??
Abbildung. 😉
InformationsquelleAutor Andrew Thompson
Dell Vostro 5480 mit ubuntu mate 16.04 hatte ich ein ähnliches Problem.
Es ist behoben, die änderung der Nvidia-Treiber mit einem zusätzlichen Treiber.
Und wählen Sie die NVidia-Profil.
InformationsquelleAutor Rafael Gimenes
Ähnlich fix zu duffy356:
Lenovo T430s mit Windows 7 64 bit mit NVIDIA NVS 5200M neben der HD 4000.
Update auf Java 8 update 5 erstellte Grafiken und Knopf Korruption für zwei Swing-apps, jEdit und Freemind.
Mithilfe der NVIDIA Systemsteuerung zum ändern der globalen Einstellungen für die Power-Management-Modus auf "maximale Leistung Bevorzugen" wie es aussieht, hat das Problem gelöst.
Nicht sicher, ob es eine lauernde Frage, wie die apps, set-Größen.
InformationsquelleAutor Halfabee2
Schritte:
funktionierte für mich,....
InformationsquelleAutor Vishal Patil