Почему мой код Java не принимает значение поля JText? - PullRequest
1 голос
/ 24 октября 2011

Я пытаюсь получить значение из текстового поля (введенного пользователями), чтобы использовать его для обработки.Но что бы я ни делал, оно не получит введенное значение, оно, похоже, останется пустым.Может кто-нибудь, пожалуйста, скажите мне, почему он не получит значение из текстового поля.

это метод, который изначально создал текстовое поле с именем writeStrings

public void chooseEmpToAdd()
{
     JTextArea EmpDetails = new JTextArea(5,20);
     JTextField writeStrings  = new JTextField(20); 
     JLabel enterIDno = new JLabel("Please enter The Employye ID number that you wish to assign to a department: ");  

     JButton  submit  = new JButton  (" Submit") ;
       ButtonListenerEmp Listener2 = new ButtonListenerEmp(); 
      submit.addActionListener(Listener2);
     JFrame frameAllEmps = new JFrame();
      frameAllEmps.setSize( 150, 140 );
     frameAllEmps.pack();
     frameAllEmps.setVisible(true); 

     //layout
     frameAllEmps.setLayout(new FlowLayout());
      frameAllEmps.add(enterIDno);

    int x = 0;
    System.out.println("ALL Emps from the tree map");
    for(int key:employeeMap.keySet())
    {

        Employee dEmp = employeeMap.get(key);
        System.out.println("Employe no :" +x+": "+dEmp);
        EmpDetails.setText(EmpDetails.getText()+" "+dEmp);
        frameAllEmps.add(EmpDetails);   
         x++;
    }

    frameAllEmps.add(new JScrollPane(EmpDetails));
    frameAllEmps.add(writeStrings);
    frameAllEmps.add(submit);
    frameAllEmps.pack();

}

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

 private class ButtonListenerEmp implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
            String ID ; 
            int dID;


               ID = writeStrings.getText();
                System.out.println("start of try b4 changes: "+ID);     
               }
           }

Ответы [ 4 ]

3 голосов
/ 24 октября 2011

Реализация слушателя не должна иметь доступа к локальной переменной writeStrings, я даже не уверен, как это скомпилируется - точный ли код, который вы выложили?локальная переменная writeStrings, и переменная экземпляра writeStrings, хотя трудно сказать, так как вы не опубликовали остальную часть кода.Попробуйте не объявлять writeStrings в методе chooseEmpToAdd;используйте вместо этого переменную класса.

2 голосов
/ 24 октября 2011

Идентификатор переменной, возможно, не был инициализирован (т.е. String ID = "";)

Также имеется ошибка компиляции в строке writeStrings.getText(), поскольку переменная writeStrings не существует вне метода chooseEmpToAdd(). Вместо этого попробуйте объявить JTextField writeStrings = new JTextField(20); перед методом.

2 голосов
/ 24 октября 2011

Поскольку вы объявляете текстовое поле как локальную переменную метода chooseEmpToAdd, оно не отображается классом ButtonListenerEmp. Чтобы решить эту проблему, объявите текстовое поле как поле класса и сделайте его общедоступным или передайте текст текстового поля в качестве аргумента ButtonListenerEmp constructor.

0 голосов
/ 24 октября 2011

Одна вещь, которая приходит мне в голову из представленного кода, заключается в том, что вы создаете новую JTextField и сохраняете ее в локальной переменной с именем writeStrings, может быть, это не то же самое, что вы пытаетесь прочитатьс латерона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...