JTextField(Swing)中的希伯来语文本

时间:2016-02-19 15:54:34

标签: java swing jtextfield hebrew

当我在fileText.setText(path)中执行类似JTextField的操作时,除非文本是希伯来语(或结合英语和希伯来语),否则效果很好。然后我得到这样的东西:

enter image description here

我尝试了不同的字体(即使是在其中提到“希伯来语”的字体),但它没有帮助。我该如何解决?

顺便说一句,它与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);
                }
                }}
    }

1 个答案:

答案 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方向设置为更好地匹配希伯来语,我想在我的例子中,希伯来字母以相反的顺序显示,而不考虑实际的方向。

执行以下操作:

  • 检查JTextField是否在希伯来语中运行良好?如果是这样,那么文件选择器
  • 返回的路径中有一些奇怪的东西
  • 通过将路径引用到控制台来检查路径。找到可能导致问题的字符,例如\ -es或破解的unicode代码点
  • 以hexa转储字符串的字节。这可以揭示例如unicode字节排序标记或破坏的unicode代码点。