Java JTextField中的希伯来文文本(Swing)
当我在Java JTextField中的希伯来文文本(Swing),java,swing,jtextfield,hebrew,Java,Swing,Jtextfield,Hebrew,当我在JTextField中执行类似fileText.setText(path)的操作时,除非文本是希伯来语(或结合了英语和希伯来语),否则效果很好。然后我得到这样的结果: 我尝试了不同的字体(甚至其中提到了“希伯来语”的字体),但都没有用。我怎么修理它 顺便说一下,它与ToolTipText(fileText.setToolTipText(path))一起工作正常 这是我的密码: // browse files or folders public void browse(JTextF
JTextField
中执行类似fileText.setText(path)
的操作时,除非文本是希伯来语(或结合了英语和希伯来语),否则效果很好。然后我得到这样的结果:
我尝试了不同的字体(甚至其中提到了“希伯来语”的字体),但都没有用。我怎么修理它
顺便说一下,它与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);
}
}}
}
不是答案,因为您的代码运行良好。请尽量保护您的环境 对我来说,它与Windows7上的默认字体完美地结合在一起。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代码点李>
“我用了什么样的JDK?”我尝试了不同的字体(甚至字体中提到的“希伯来”)。“看。也许这个bug与你的情况有关:考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应。我仍然没有问题。请张贴一个正确的,包括确切的字符串路径,你给你的问题。添加您的JDK版本和操作系统的信息。我倾向于在顶部贴一条关于此类帖子的通知:“这还不是答案,而是一条包含大量代码和详细信息的注释”,以避免出现“没有答案”标志。答案是,Java 8和Windows 7无法重现此问题,因此,所讨论的原始代码运行良好。它不是答案,而是观察结果。您不指导OP如何修复或解决其当前问题。最后,你在回答中向OP提出了一个问题,这进一步使其作为回答无效。请看我的评论。这个问题无法重现,因此很难解决。我认为问题在于底层操作系统返回的路径,但这是一个假设。我尽力帮助解决这个问题,并给出了一些提示。建议解决方案的希伯来文输出是相反的,单独使用
函数无法正常工作(请参阅此链接:),最好使用setComponentOrientation
。JTextField#setHorizontalAlignment