ОС: ubuntu22.04
Рабочий стол: Gnome, X11
Среда ввода метода: ibus 1.5.26
InputMethod установлено: ibus-mozc
JDK: версия openjdk "21.0.10"
Ниже приведен пример моей программы:
Код: Выделить всё
import javax.swing.*;
import java.awt.*;
import java.awt.im.InputContext;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
//create jframe
JFrame frame = new JFrame();
frame.setSize(400, 300);
frame.setBackground(Color.black);
frame.setLayout(null);
frame.setLocation(300, 300);
//create jpanel
JPanel panel = new JPanel();
panel.setSize(400, 300);
panel.setBackground(Color.yellow);
panel.setLayout(null);
frame.add(panel);
//create jTextfield
JTextField textField = new JTextField();
textField.enableInputMethods(true);
textField.setSize(200, 50);
textField.setLocation(50, 50);
//create button
Button button = new Button("Click");
button.setSize(50, 50);
button.setBackground(Color.cyan);
button.setLocation(300, 50);
//when button is clicked, change input method to japanese
button.addActionListener(e -> {
InputContext inputContext = textField.getInputContext();
System.out.println(inputContext.getLocale());
System.out.println("change im to japanese");
inputContext.selectInputMethod(Locale.JAPAN);
System.out.println(inputContext.getLocale());
});
panel.add(textField);
panel.add(button);
frame.setVisible(true);
}
}
Но когда я нажал кнопку, журнал распечатался следующим образом:
Код: Выделить всё
en_US
change im to japanese
en_US
После этого я пытался искать материалы по этому поводу, но там слишком редкая информация, и я не могу иметь о ней четкое представление.
Итак, есть ли кто-нибудь, кто знает, что такое awt InputContext в Linux, и может сказать мне, почему это не работает? Я очень ценю это.
Мобильная версия