2014-09-22 2 views
0

Мое приложение на иврите. Компьютеры, на которых запущено мое приложение, имеют английский язык как язык по умолчанию, а иврит - как вторичный язык.Изменить языковой диалог ввода на иврит в java

Каждый раз, когда им нужно вводить материал в приложение, для изменения языка они должны «alt + shift».

В моем последнем вопросе -> Change input language in java Я получил большое представление о том, как установить региональные настройки для текстовых полей, и он работал отлично!

Теперь мне нужно сделать то же самое во всех диалогах ввода popup.

Предыдущее решение было основано на использовании метода FocusGained в JTextField FocusListener, теперь у меня нет FocusGained вариант, по крайней мере, насколько я знаю :)

IE:

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

Эта панель параметров запрашивает ввод и сохраняет ее в строке, мне нужно, чтобы она всплывала, готовая для ввода на иврите.

Возможно ли это?

Спасибо, Dave

+0

Абсолютно возможно, хотя, возможно, не через JOptionPane. Возможно, вам придется сделать это вручную, используя модальный JDialog – ControlAltDel

+0

, можете ли вы показать мне пример, пожалуйста? –

+0

Пожалуйста, разместите короткий рабочий пример. 'requestLine.this' ничего нам не говорит. Если 'JOptionPane' содержит текстовое поле, вы можете использовать его' FocusListener'. – user1803551

ответ

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.
  • Изменение родительского компонента.
+0

работает как шарм !!! большое спасибо !!! –

+0

Как я могу установить tf, чтобы получить фокус ??? –

+0

@DavidGidony Да, автоматическая фокусировка немного сложнее из-за технических причин. Это возможно с совершенно другим подходом к фокусу, но он будет страдать и в других отделах. Если я получу что-то, я отправлю его здесь. – user1803551

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

 Смежные вопросы

  • Нет связанных вопросов^_^