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

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

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

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

最佳答案

这不是一个答案,因为您的代码可以正常工作。请尝试您的环境。

对我来说,它可以使用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创建一个包含以下内容的窗口:



(对不起,如果我在希伯来语中使用了奇怪或令人反感的内容。我只是从另一页复制了unicode字符,他们声称这表示“你好”)。

我也尝试过在测试应用中编写代码,效果也很好。
同样,仅希伯来语,英语-希伯来语混合物也能正常工作。

但是,您可能希望将RTL方向设置为与希伯来语更好地匹配,并且我想在我的示例中,希伯来字母以相反的顺序显示,而与实际方向无关。

请执行下列操作:
  • 检查JTextField在希伯来语中是否工作正常?如果是这样,则文件选择器
  • 返回的路径中有些奇怪
  • 通过将其路由到控制台来检查路径。找到可能导致问题的字符,例如\-es,或损坏的unicode代码点
  • 以十六进制形式转储字符串的字节。这可以揭示例如unicode字节排序标记或损坏的unicode码点。
  • 关于java - JTextField中的希伯来语文本(Swing),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35509414/

    10-11 14:32