当我在fileText.setText(path)
中执行类似JTextField
的操作时,除非文本是希伯来语(或结合英语和希伯来语),否则效果很好。然后我得到这样的东西:
我尝试了不同的字体(即使是在其中提到“希伯来语”的字体),但它没有帮助。我该如何解决?
顺便说一句,它与ToolTipText(fileText.setToolTipText(path)
)
这是我的代码:
// browse files or folders
public void browse(JTextField txtField) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedDir = fileChooser.getSelectedFile();
String path = selectedDir.getAbsolutePath();
if (txtField == srcText) {
srcText.setText(path);
srcText.setToolTipText(path);
}
else {
if (txtField == dstText) {
dstText.setText(path);
dstText.setToolTipText(path);
}
}}
}
答案 0 :(得分:2)
不是答案,因为您的代码运行良好。请尝试你的环境。
对我而言,它在Windows 7上使用默认字体完美无缺地工作.Java JDK1.8.0_31
public class JTextFieldExample extends JFrame {
private static final long serialVersionUID = 1L;
public JTextFieldExample() {
super("TextField Test Demo");
final Container container = getContentPane();
final JTextField textField=new JTextField("hello \u05DD\u05D5\u05DC\u05E9 Hello \u05DD\u05D5\u05DC\u05E9");
// optionally set RTL
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
container.add(textField);
setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(final String args[]) {
new JTextFieldExample();
}
}
使用包含以下内容的JTextField创建一个窗口:
helloםולשHelloםולש
(我很抱歉,如果我在希伯来语中使用了一些奇怪或令人反感的东西。我只是从另一页复制了unicode字符,他们声称这意味着“你好”)。
我也试过你在测试应用程序中的代码,这也很好用。 也是希伯来语,英语 - 希伯来语混合物也很好用。
但是你可能更喜欢将RTL方向设置为更好地匹配希伯来语,我想在我的例子中,希伯来字母以相反的顺序显示,而不考虑实际的方向。
执行以下操作: