当我JTextField
在 OSX 上的 Swing 应用程序中编辑文本时,文本会出现乱码。当我插入或删除字符时它最明显,但只是在移动光标时会出现伪影。数据很好,但 UI 渲染不行。
是什么原因造成的,我该如何解决?
我正在使用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
.
不确定它是否相关,但我使用的是1.6.0_51
带有视网膜显示器的 Apple Java 版本。