Когда я редактирую текст в JTextField
в моем приложении Swing на OSX, текст становится искаженным. Это наиболее заметно, когда я вставляю или удаляю символы, но есть артефакты только при перемещении курсора. Данные в порядке, но визуализация пользовательского интерфейса не является.Опечатанный текст в текстовом поле OSX Java
Каковы причины этого и как я могу это исправить?
Я использую com.apple.laf.AquaLookAndFeel
, как в этом примере программы. Введите текст и передвиньте курсор с помощью клавиш со стрелками, чтобы наблюдать за странностью.
import java.awt.*;
import javax.swing.*;
class TextFieldDisplay {
public static void main(String[] args) {
MainWindow app = new MainWindow();
}
}
class MainWindow extends JFrame {
public MainWindow() {
try {
UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
} catch(Exception e) {
System.out.println("AquaLookAndFeel is not supported on your platform.");
System.exit(1);
}
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
setMinimumSize(new Dimension(300, 100));
JPanel innerPanel = new JPanel();
JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(250, 20));
scrollPane.setViewportView(innerPanel);
JPanel mainPanel = new JPanel();
getContentPane().add(mainPanel);
mainPanel.add(innerPanel);
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(250, 20));
innerPanel.add(textField);
pack();
}
}
Я заметил, как я писал SSCCE, что проблемы с отображением, казалось, возникают после того, как я добавил JScrollPane
.
Не уверен, что это актуально, но я использую версию Apple Java 1.6.0_51
с дисплеем сетчатки.
Рассмотрите возможность создания и публикации [минимальной тестовой программы] (http://sscce.org), также известной как sscce, которую мы можем запускать, тестировать, изменять и исправлять. –
Пожалуйста, разместите небольшой пример кода, который демонстрирует проблему (A [SSCCE] (http://sscce.org/)), в противном случае все, что может сделать, это догадываться. –
какой внешний вид вы используете? – nachokk