2014-09-22 44 views
0

我的申请是希伯来语。运行我的应用程序的计算机都将英语设置为默认语言,希伯来语作为辅助语言将输入对话框语言环境更改为java中的希伯来语

每次他们需要向应用程序输入内容时,他们必须“更换+”才能更改语言。

在我的最后一个问题 - > 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>"), ""); 

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

这甚至可能吗?

谢谢, 戴夫

+0

绝对有可能,尽管可能不通过JOptionPane。您可能需要使用模态JDialog手动执行此操作 – ControlAltDel 2014-09-22 12:00:30

+0

您能向我展示一个示例吗? – 2014-09-22 12:06:36

+0

请发表一个简短的工作示例。 'requestLine.this'不会告诉我们任何事情。如果'JOptionPane'包含一个文本字段,你可以使用它的'FocusListener'。 – user1803551 2014-09-22 12:39:53

回答

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_MESSAGEJOptionPane.QUESTION_MESSAGE添加。
  • 您可以通过拨打pane.createDialog来改变标题。
  • 检查response的值时执行您自己的行为。
  • 更改父组件。
+0

工程就像一个魅力!非常感谢 !!! – 2014-09-29 07:44:36

+0

如何设置tf以获得焦点? – 2014-09-29 11:38:06

+0

@DavidGidony是的,由于技术原因,自动对焦有点困难。有可能采用完全不同的方法来获得重点,但在其他部门会受到影响。如果我得到了一些工作,我会在这里发布。 – user1803551 2014-09-29 13:22:38

0

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();