【问题标题】:Java JTextfield gives me only null dataJava JTextfield 只给我空数据
【发布时间】:2015-08-09 13:38:03
【问题描述】:

我制作了一个 Mainmenu JFrame,它可以生成 4 个不同的新框架来代表每个菜单。主菜单框架工作正常。但我发现它无法从新框架文本字段中获取文本。这是错误报告和源代码。请告诉我如何解决它。

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.JTable;


public class PhoneBook extends JFrame implements ActionListener
{

    private String[] colName;


    JPanel panel_main;
    JPanel panel_phbook;
    JPanel panel_numb;
    JPanel panel_grp;

    JButton btn_main_phb;
    JButton btn_main_name;
    JButton btn_main_numb;
    JButton btn_main_grp;


    JTextArea ta_name_serch;
    TextField tf_name_input;

    JButton btn_name_search;
    JButton btn_name_cancel;
    JButton btn_name_modify;
    JButton btn_name_del;
    JButton btn_name_send;

    JTextArea ta_numb_serch;
    TextField tf_numb_input;

    JButton btn_numb_search;
    JButton btn_numb_cancel;
    JButton btn_numb_modify;
    JButton btn_numb_del;
    JButton btn_numb_send;

    JButton btn_grp_search;
    JButton btn_grp_cancel;
    JButton btn_grp_modify;
    JButton btn_grp_del;
    JButton btn_grp_send;
    private JTable table;




    public static void main(String[] args) 
    {
        PhoneBook frame = new PhoneBook();

    }
    public PhoneBook() 
    {

        colName = new String[3];

        panel_main = new JPanel();
        panel_main.setLayout(new GridLayout());

        btn_main_phb = new JButton("phonbook");
        btn_main_name = new JButton("name");
        btn_main_numb = new JButton("number");
        btn_main_grp = new JButton("grp");

        btn_main_phb.addActionListener(this);
        btn_main_name.addActionListener(this);
        btn_main_numb.addActionListener(this);
        btn_main_grp.addActionListener(this);


        panel_main.add(btn_main_phb);
        panel_main.add(btn_main_name);
        panel_main.add(btn_main_numb);
        panel_main.add(btn_main_grp);





//      table = new JTable();
//      table.setColumnSelectionAllowed(true);
//      panel_main.add(table);
//      table.set


        panel_phbook = new JPanel();
        panel_phbook.setLayout(new GridLayout());


        //      panel_phbook.add(btn_main_phb);
//      panel_phbook.add(btn_main_name);
//      panel_phbook.add(btn_main_numb);
//      panel_phbook.add(btn_main_grp);

        btn_name_search = new JButton("Serch");
        btn_name_cancel = new JButton("Serch Cancel");
        btn_name_modify = new JButton("Modi");
        btn_name_del = new JButton("del");
        btn_name_send = new JButton("sms send");

        TextField tf_name_input = new TextField();
        panel_phbook.add(tf_name_input);
        panel_phbook.add(btn_name_search);
        btn_name_search.addActionListener(this);

//      

        panel_numb = new JPanel();
        panel_grp = new JPanel();

        //getContentPane().setLayout(BorderLayout());
        getContentPane().setLayout(new BorderLayout());
        setLocation(500, 400);
        getContentPane().add(panel_main);
        setSize(650,150);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);

    }



    @Override       public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource().equals(btn_main_phb))
        {

            JFrame frame2 = new JFrame();
            frame2.getContentPane().add(panel_phbook);
            frame2.setLocation(400, 300);
            frame2.setSize(500,400);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            frame2.setVisible(true);

        }
        else if(e.getSource().equals(btn_main_name))
        {

        }
        else if(e.getSource().equals(btn_main_numb))
        {

        }
        else if(e.getSource().equals(btn_main_grp))
        {

        }
        else if(e.getSource().equals(btn_name_search))//this is the problem
        {
            System.out.println(tf_name_input.getText());
        }
    }

线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 PhoneBook.actionPerformed(PhoneBook.java:166) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源)在 javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在 java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)在 java.awt.LightweightDispatcher.processMouseEvent(未知来源)在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Window.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$200(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源)

【问题讨论】:

  • 您可能应该使用JTextField 而不是AWT TextField
  • 哦,我的错。但是我更改了代码但结果是一样的。
  • 这一行是问题else if(e.getSource().equals(btn_name_search)) 还是else if 块中它下面的问题?
  • System.out.println(tf_name_input.getText());这就是问题。我认为 tf_name_input.getText() 为空
  • 您是否尝试过创建一个临时变量来尝试存储数据,然后访问?也许你的电话打错了?

标签: java swing frame textfield


【解决方案1】:

您遇到此问题的原因是因为您创建了一个与您的类成员变量之一同名的新局部变量:

TextField tf_name_input = new TextField();

代替:

tf_name_input = new TextField();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2013-01-16
    • 2014-10-23
    • 2013-06-12
    • 1970-01-01
    相关资源
    最近更新 更多