Подтвердить что ты не робот

В JDK 1.8 отображается искажение качания, исправлено в JDK 1.7

Я установил IntelliJ IDEA (13.1.1 # IC-135.480) и JDK 1.8.0 (x64), и я сгенерировал некоторый графический интерфейс с дизайнером GUI Form.

Затем я запустил код и понял, что что-то не в порядке.

Вот скриншот моего графического интерфейса: Buggy Rendering JDK 1.8.0

Отрисовка шрифта, похоже, не в порядке. Кроме того, Button теряет свой текст, когда я нажимаю на него курсор.

Итак, я установил JDK 1.7.0_40 (x64), перекомпилировал проект и снова запустил его.

При использовании JDK 1.7 появляется следующая форма: Rendering OK JDB 1.7.0_40

Рендеринг кажется ОК, и кнопка тоже в порядке.

Итак, я установил новейшие драйверы Graphics and Chipset и многое другое, но проблема все еще существует. Были ли у вас такие проблемы с интерфейсами Java Swing? Не могли бы вы помочь мне решить мои проблемы? Любая помощь будет принята с благодарностью.


UPDATE:

Я создал небольшой проект с только 1 JTextArea и 1 JButton, и у меня такие же проблемы с рендерингом.

По словам Эндрю Томпсона, я изменил setSize(), и я начал с EDT. Пример ниже:

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

В результате получается простой JFrame с компонентами в нем.

SimpleClient -> Screenshot immediately after Start

Когда я пишу какой-то текст или мочу свой mousePointer над Button, компоненты получаются таким образом (Text: testsentence.123; Button-Label: TestButton)

after writing - or mouse over

4b9b3361

Ответ 1

Наконец, я нашел решение для своей проблемы. Мне пришлось изменить настройки управления энергией моего NVIDIA GeForce 620M на максимальную производительность.

Ответ 2

Для тех, чья проблема не была решена; попробуйте это решение:

Установите глобальную переменную окружения "J2D_D3D" в "false" внутри ОС. Согласно Sun, этот параметр используется для отключения использования Java 2D-системы Direct3D в Java 1.4.1_02 и более поздних версиях.

т.е. просто создайте переменную окружения с именем "J2D_D3D" и значением "false" без кавычек.

это решило мои проблемы с рендерингом, надеюсь, что оно тоже ваше.

Ответ 3

Вы можете выполнить следующие действия:

  • Щелкните правой кнопкой мыши на рабочем столе и выберите панель управления NVIDIA
  • Выберите "Управление настройками 3D" в левой панели
  • Выберите вкладку "Настройки программы" в главном окне
  • Нажмите "Добавить"
  • Перейдите в папку java (C:\Program Files\Java\jre1.8.0_20\bin) и выберите javaw.exe и нажмите "открыть" (этот шаг, вероятно, будет зависеть от вашей операционной системы, но должен быть довольно прост найти)
  • Где он говорит: "Выберите предпочтительный графический процессор для этой программы", щелкните раскрывающийся список и выберите "Высокопроизводительный процессор NVIDIA".
  • Нажмите "Применить" в правом нижнем углу, и вам будет хорошо.

Ответ 4

У меня точно такая же проблема. Что я нашел после настройки настройки качества Duffys:

Мой ноутбук работает как с Intel HD 4000, так и с NVS 5200M. Запуск приложений Swing с Java 7 отлично подходит для обеих плат. С графическим интерфейсом Java 8 Swing, отображаемым на карте Intel (независимо от настроек качества), выглядят рухнувшими (как в скриншоте duffys), используя NVS 5200M, они выглядят так, как они привыкли.

Не удалось найти что-либо на java-трекер ошибок, с другой стороны трудно описать эту ошибку.

Ответ 5

textArea1.setSize(500, 300);

Есть проблема. Java GUI, возможно, придется работать на нескольких платформах, на разных разрешениях экрана и с использованием разных PLAF. Таким образом, они не способствуют точному размещению или калибровке компонентов. Чтобы организовать компоненты для надежного графического интерфейса, вместо этого используйте диспетчеры компоновки или их комбинации 1 наряду с макетом и границами для пробел 2.

  • Jaqap.png
  • NVtKI.png

Ответ 6

Dell Vostro 5480 с ubuntu mate 16.04 У меня была аналогичная проблема. Он исправил изменение драйвера Nvidia, используя дополнительный драйвер.

введите описание изображения здесь

И выберите профиль NVidia. введите описание изображения здесь

Ответ 7

Аналогичное исправление для duffy356:

Lenovo T430 с 64-разрядной версией Windows 7 с NVIDIA NVS 5200M вместе с HD 4000. Обновление для обновления на Java 8 5 создана графика и повреждение кнопки для двух приложений Swing, jEdit и Freemind.

Использование апплета панели управления NVIDIA для изменения глобальных параметров режима управления питанием на "Предпочитаемая максимальная производительность" выглядит так, как будто исправлена ​​эта проблема.

Не уверен, существует ли скрытая проблема с тем, как приложения устанавливают размеры.

Ответ 8

действия:

  • панель управления
  • система и безопасность
  • система
  • Удаленные настройки
  • вкладка "Дополнительно"
  • щелкните переменные среды
  • создать переменную J2D_D3D
  • и установите для значения значение false.

работал у меня,....