J'ai installé IntelliJ IDEA (13.1.1 # IC-135.480) et JDK 1.8.0 (x64) et j'ai généré une interface graphique avec le concepteur de formulaires GUI.
Ensuite, j'ai exécuté le code et réalisé que quelque chose ne va pas.
Voici une capture d'écran de mon interface graphique:
Le rendu de la police ne semble pas correct. De plus, le bouton perd son texte lorsque je déplace ma souris dessus.
J'ai donc installé JDK 1.7.0_40 (x64), recompilé le projet et relancé.
Le formulaire suivant apparaît lorsque j'utilise JDK 1.7:
Le rendu semble être OK et le bouton est également OK.
J'ai donc installé les derniers pilotes graphiques et chipsets et bien plus encore, mais le problème persiste. Avez-vous déjà eu de tels problèmes avec Java Swing UIs? Pourriez-vous m'aider à résoudre mes problèmes? Toute aide serait grandement appréciée.
J'ai créé un petit projet avec seulement 1 JTextArea et 1 JButton et j'ai les mêmes problèmes de rendu.
Selon Andrew Thompson, j'ai changé le setSize () et je commence par EDT. L'exemple ci-dessous:
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());
}
}
Le résultat est un simple JFrame avec les composants qu'il contient.
Lorsque j'écris du texte ou que je déplace mon pointeur de souris sur le bouton, les composants sont rendus comme ceci (texte: testsentence.123; étiquette de bouton: testbutton)
Enfin, j'ai trouvé la solution à mon problème. J'ai dû modifier les paramètres de contrôle de l'énergie de ma NVIDIA GeForce 620M pour des performances maximales.
Pour ceux dont le problème n'a pas été résolu; essayez cette solution:
Définissez la variable d'environnement global "J2D_D3D" sur "false" dans le système d'exploitation. Selon Sun, ce paramètre est utilisé pour désactiver l'utilisation Java du système 2D de Direct3D dans Java 1.4.1_02 et versions ultérieures).
ie: créez simplement une variable d'environnement avec le nom "J2D_D3D" et la valeur "false" sans les guillemets.
cela a résolu mes problèmes de rendu, j'espère que le vôtre aussi.
Vous pouvez suivre ces étapes:
J ai exactement le même problème. Ce que j'ai trouvé après l'ajustement du paramètre de qualité de duffys:
Mon ordinateur portable fonctionne à la fois avec un Intel HD 4000 et un NVS 5200M. Exécuter des applications Swing avec Java 7 est très bien sur les deux cartes. Avec Java 8 interfaces graphiques Swing rendues par la carte Intel (quels que soient les paramètres de qualité)) dans duffys Screenshot), en utilisant le NVS 5200M, ils ressemblent à ce qu'ils étaient.
Impossible de trouver quoi que ce soit sur le Java, en revanche il est difficile de décrire ce bogue.
textArea1.setSize(500, 300);
Il ya un problème. Java peuvent devoir fonctionner sur un certain nombre de plates-formes, sur différentes résolutions d'écran et en utilisant différentes PLAF. En tant que telles, elles ne sont pas propices au placement exact ou au dimensionnement des composants. Pour organiser les composants pour une interface graphique robuste, utilisez à la place des gestionnaires de disposition, ou leurs combinaisons1, ainsi que le rembourrage de mise en page et les bordures pour espace blanc2.
Correction similaire à duffy356:
Lenovo T430 exécutant Windows 7 64 bits avec NVIDIA NVS 5200M avec HD 4000. Mise à jour vers Java 8 mise à jour 5 a créé des graphiques et une corruption des boutons pour deux applications Swing, jEdit et Freemind.
L'utilisation de l'applet du panneau de configuration NVIDIA pour modifier les paramètres globaux du mode de gestion de l'alimentation sur "Préférer les performances maximales" semble avoir résolu ce problème.
Je ne sais pas s'il y a un problème caché avec la façon dont les applications définissent les tailles.
pas:
travaillé pour moi, ....