Question

I have installed IntelliJ IDEA (13.1.1 #IC-135.480) and JDK 1.8.0 (x64) and I generated some GUI with the GUI Form designer.

Then I ran the code and realized that something is not alright.

Here is a Screenshot of my GUI: Buggy Rendering JDK 1.8.0

The rendering of the Font seems to be not OK. Additionally the Button looses its Text, when I move my mouse over it.

So I installed JDK 1.7.0_40 (x64), recompiled the Project and ran it again.

The following Form appears, when i use JDK 1.7: Rendering OK JDB 1.7.0_40

The Rendering seems to be OK and the Button is also OK.

So I installed the newest Graphics and Chipset drivers and much more, but the problem still exists. Have you ever had such problems with Java Swing UIs? Could you help me to fix my problems? Any help would be greatly appreciated.


UPDATE:

I created a small Project with only 1 JTextArea and 1 JButton and i have the same rendering problems.

According to Andrew Thompson i changed the setSize() and I start from EDT. The Example below:

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

The result is a simple JFrame with the Components in it.

SimpleClient - loading= Screenshot immediately after Start">

When I write some Text, or moove my mousePointer over the Button the components get rendered like this (Text: testsentence.123; Button-Label: TestButton)

after writing - or mouse over

Was it helpful?

Solution 2

Finally I found the solution for my problem. I had to change the energy control settings of my NVIDIA GeForce 620M to maximum performance.

OTHER TIPS

For those whose problem has not been solved; try this solution:

Set the global environment variable "J2D_D3D" to "false" inside the OS. According to Sun, this setting is used to turn off the Java 2D system's use of Direct3D in Java 1.4.1_02 and later.

ie: simply create a environmental variable with name "J2D_D3D" and value "false" without the quotes.

this has solved my rendering problems, hope it does yours also.

You can follow this steps :

  1. Right-click on desktop and click NVIDIA Control Panel
  2. Select 'Manage 3D Settings' in the left pane
  3. Select the "Program Settings" tab in the main window
  4. Click 'Add'
  5. Navigate to your java folder (C:\Program Files\Java\jre1.8.0_20\bin) and select javaw.exe and press 'open'(this step will probably depend on your operating system but should be pretty easy to find)
  6. Where it says 'Select the preferred graphics processor for this program' click the drop-down and choose 'High Performance NVIDIA processor'
  7. Click 'Apply' in the bottom right and you're good to go.

I have exactly the same problem. What I found after duffys quality setting adjustion:

My Notebook runs both an Intel HD 4000 and a NVS 5200M. Running Swing applications with Java 7 is fine on both cards. With Java 8 Swing GUIs rendered by the Intel card (regardless of quality settings) look crumbled (as in duffys Screenshot), using the NVS 5200M they look as they used to.

Could not find anything on the java bug tracker, on the otherhand it is hard to describe this bug.

textArea1.setSize(500, 300);

There is a problem. Java GUIs might have to work on a number of platforms, on different screen resolutions & using different PLAFs. As such they are not conducive to exact placement or sizing of components. To organize the components for a robust GUI, instead use layout managers, or combinations of them1, along with layout padding & borders for white space2.

Dell Vostro 5480 with ubuntu mate 16.04 I had a similar issue. It's fixed changing the Nvidia Driver, using an additional driver.

enter image description here

And select the NVidia Profile. enter image description here

Similar fix to duffy356:

Lenovo T430s running Windows 7 64 bit with NVIDIA NVS 5200M alongside HD 4000. Update to Java 8 update 5 created graphics and button corruption for two Swing apps, jEdit and Freemind.

Using the NVIDIA control panel applet to change the global settings for Power Management Mode to "Prefer maximum performance" looks like it fixed this issue.

Not sure if there is a lurking issue with how the apps set sizes.

steps:

  1. control panel
  2. system and security
  3. system
  4. Remote settings
  5. Advanced tab
  6. click Environment variables
  7. create a J2D_D3D variable
  8. and set the value to false.

worked for me,....

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top