Невозможно ввести JTextField - PullRequest
0 голосов
/ 19 марта 2012

У меня есть одна небольшая проблема с JTextField на японской машине RHEL5, из-за которой пользователь не может ничего в нее напечатать, я создаю ее, используя следующий синтаксис

Container c = getContentPane();
c.setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 10, 0), 0, 0);

c.setBackground(Color.WHITE);
JTextField txtName = new JTextField(10);
txtName.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override
        public void keyReleased(KeyEvent e) {
            disableBtn();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub

        }
    });
    gbc.gridx = 1;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.anchor = GridBagConstraints.NORTHWEST;
    c.add(txtName, gbc);

Метод disableBtn () отключает кнопку в диалоговом окне, если пользователь не ввел ничего в текстовое поле выше. И добавив его в JPanel, используя метод add, я использую GridBagLayout для этого. Эта проблема возникает с некоторыми JTextField, а другие работают нормально. Кроме того, на моей машине разработки все работает хорошо, но когда я передаю код на японскую машину RHEL5, возникает проблема.

Я столкнулся с подобной проблемой с JPasswordField и решил ее, используя следующую команду,

password.setEchoChar('*');
password.enableInputMethods(true);

Машина, на которой возникли проблемы, имеет следующий вывод команды "java -version",

# java -version

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

Что я думаю, хорошо. Есть ли что-то, чего мне здесь не хватает?

1 Ответ

3 голосов
/ 19 марта 2012

1) ваш код не показывает, что такое c.add(txtName, gbc) ;, это может быть самой важной причиной, я думаю, что вы довольно проигнорировали запрос @Andrew Thompson, код, размещенный здесь, не SSCCE,

2) не используйте Keylistener , потому что ваш JTextComponent должен иметь setFocusable(), я пропускаю эту строку кода, для Swing JComponents используйте KeyBindings

3) для прослушивания в JTextComponents использовать только DocumentListener

...