我试图从文本字段(由用户输入)获取值以用于处理。但是无论我做什么,它都不会获得输入的值,它似乎仍然是空的。有人可以告诉我为什么它不能从“文本”字段中获取值。

这是最初创建名为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);
               }
           }

最佳答案

侦听器实现不应访问局部变量writeStrings,我什至不确定如何编译-您发布的代码是否准确?

哦,您可能既有局部变量writeStrings,又有实例变量writeStrings,尽管很难说,因为您没有发布其余代码。尝试不要在writeStrings方法中声明chooseEmpToAdd;改用class变量。

07-24 18:51