У меня есть несколько методов ввода для написания (традиционный китайский) тайваньских, которые поставляются с Windows 7. Кроме того, все методы ввода имеют возможность переключения ширины символов (одиночные байты/двойные байтовые символы).
- Китайский (традиционный) - новый быстрый
- Китайский (традиционный) - ChangJie
- Китайский (традиционный) - Быстрый
- Китайский (традиционный) - Фонетический
- Китайский (традиционный) - новый фонетический
- Китайский (традиционный) - новый ChangJie
Если я выбираю один из этих методов ввода в приложении Java и устанавливаю ширину символа в полуширину (режим с одним байтовым символом), я могу успешно вводить текст в JTextField. Но если приложение отображает некоторое диалоговое окно (например, JOptionPane) или всплывающее окно, ширина символа метода ввода автоматически изменится на полноразмерный (режим с двумя байтовыми символами). После этого пользователь должен вручную переключиться на символы полуширины.
Я могу программно включить или отключить метод ввода с использованием класса Java "InputContext", но я не могу управлять, если для метода ввода задан режим символа полной ширины/полуширины (один/двойной байт).
Я думал, может быть, это может быть отключено из настроек метода ввода Windows, но не было никакой опции, связанной с автоматическим переключением ширины символа.
Вопрос: Есть ли способ обработать (отключить) это автоматическое переключение?
Вот пример кода для проверки этого с помощью приведенных выше методов ввода:
public class Example implements ActionListener {
JFrame f = new JFrame("pasod");
JTextField txt = new JTextField();
Button btn = new Button("Locale");
public Example() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout());
btn.addActionListener(this);
panel.add(btn);
panel.add(txt);
f.add(panel);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setSize(800, 100);
f.setVisible(true);
}
public static void main(String[] args) {
new Example();
}
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(btn, "Neso", "Neso",
JOptionPane.INFORMATION_MESSAGE);
}
}
Спасибо.