【问题标题】:Change input dialog locale to hebrew in java在java中将输入对话框语言环境更改为希伯来语
【发布时间】:2014-09-22 11:23:52
【问题描述】:

我的申请是希伯来语的。运行我的应用程序的计算机都将英语设置为默认语言,将希伯来语设置为辅助语言

每次他们需要向应用程序输入内容时,他们都必须“alt + shift”来更改语言。

在我的最后一个问题中 --> Change input language in java 我非常了解如何为文本字段设置语言环境,而且效果很好!

现在我需要在所有弹出的输入对话框中做同样的事情。

之前的解决方案是基于使用JTextField FocusListener的FocusGained方法, 现在我没有 FocusGained 选项,至少据我所知 :)

IE:

response = JOptionPane.showInputDialog(requestLine.this, ("<html><b><font color=\"#8F0000  +
  +   \"size=\"10\" face=\"Ariel\">" + "הכנס סטטוס חדש: " + "</font></p></html>"), "");

此选项窗格要求输入,并将其存储在一个字符串中,我需要它弹出以准备用希伯来语输入。

这可能吗?

谢谢, 戴夫

【问题讨论】:

  • 绝对有可能,虽然可能不是通过 JOptionPane。您可能需要使用模态 JDialog 手动执行此操作
  • 你能给我举个例子吗?
  • 请发布一个简短的工作示例。 requestLine.this 什么也没告诉我们。如果JOptionPane 包含一个文本字段,您可以使用它的FocusListener。
  • RequestLine.this is a Jpanel
  • 面板包含什么?用户在JOptionPane 中的何处输入文本?更好的是发布一个简短的工作示例。另外,请使用@username 回复 cmets。

标签: java swing locale joptionpane hebrew


【解决方案1】:

这将复制 showInputDialog 并更改区域设置:

public class LocaleOptionPane extends JFrame {

    public static void main(String[] args) {

        new LocaleOptionPane();
    }

    LocaleOptionPane() {

        Locale loc = new Locale("iw", "IL");
        String message = "<html><b><font color=\"#8F0000\" size=\"10\" face=\"Ariel\">" + "הכנס סטטוס חדש: " + "</font></p></html>";

        setVisible(true);

        JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
        pane.setWantsInput(true);

        JDialog dialog = pane.createDialog(this, UIManager.getString("OptionPane.inputDialogTitle", loc));
        dialog.getInputContext().selectInputMethod(loc); // pane.getInputContext... also works
        dialog.setVisible(true);
        dialog.dispose();

        String response = (String) pane.getInputValue();
        if (response == JOptionPane.UNINITIALIZED_VALUE)
            System.out.println("aborted");
        else
            System.out.println(response);
    }
}

注意事项:

  • 我没有添加绿色问号图标,因为它看起来位置不太好,不过可以通过将JOptionPane.PLAIN_MESSAGE 更改为JOptionPane.QUESTION_MESSAGE 来添加它。
  • 您可以通过pane.createDialog 调用更改标题。
  • 在检查response 的值时实现您自己的行为。
  • 更改父组件。

【讨论】:

  • @DavidGidony 是的,由于技术原因,自动对焦有点困难。有可能采用完全不同的方法来获得焦点,但它会在其他部门受到影响。如果我有什么工作,我会在这里发布。
  • @DavidGidony 当然,创建您自己的对话框并指定其功能即可,但代码更长更复杂。 JOptionPane 旨在快速而不是那么可定制。
  • 很酷,谢谢。将输入更改为希伯来语的想法来自用户没有看屏幕并开始输入的问题,然后意识到他们现在用英语而不是希伯来语写了所有内容,而现在他们仍然不看屏幕,他们刚开始写,一旦他们使用 'space' ,就点击了 ok 框,因为焦点一直在 ok 框上。
  • 嗨,对我有什么想法:)
  • @DavidGidony 我说过“创建自己的对话框并指定其功能即可”。
【解决方案2】:

public class MyDialog extends JDialog { private JTextField text = new JTextField(); public MyDialog() { //set this up with the text field and an "OK" button super(null); // ... } public String getValue() { return text.getText(); } }

然后在您的代码中...

MyDialog md = new MyDialog(); md.setModal(true); md.pack(); md.setVisible(true); // will block here until the dialog closes String val = md.getValue();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2012-12-11
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多