Java 获取JTextField用户输入返回初始空值

Java 获取JTextField用户输入返回初始空值,java,string,swing,jtextfield,Java,String,Swing,Jtextfield,在JTextFields中键入新文本时,getText在按下create按钮时会一直返回JTextFields的初始空值。应该添加哪些方法来将JTextField值更新到新的用户输入 public class NewQuizWindow { private JPanel panel; private JTextField[] textfields = new JTextField[4]; private String[] inputs = new String[text

在JTextFields中键入新文本时,getText在按下create按钮时会一直返回JTextFields的初始空值。应该添加哪些方法来将JTextField值更新到新的用户输入

public class NewQuizWindow {

    private JPanel panel;
    private JTextField[] textfields = new JTextField[4];
    private String[] inputs = new String[textfields.length];
    private JButton create;

    public NewQuizWindow() {

        panel = new JPanel();
        panel.setLayout(null);
        initialise();
    }

    public JPanel initialise(){

        //print initial labels, buttons
        JLabel l1 = new JLabel("Please fill in the required fields below.");        
        Dimension size = l1.getPreferredSize();
        l1.setBounds(225 - size.width/2, 50, size.width, size.height );
        panel.add(l1);

        JLabel title = new JLabel("Title");     
        size = title.getPreferredSize();
        title.setBounds(10, 100, size.width, size.height);
        panel.add(title);

        JLabel description = new JLabel("Description");
        size = description.getPreferredSize();
        description.setBounds(10, 130, size.width, size.height);
        panel.add(description);

        JLabel location = new JLabel("Location");
        size = location.getPreferredSize();
        location.setBounds(10, 160, size.width, size.height);
        panel.add(location);

        JLabel date_time = new JLabel("Date");
        size = date_time.getPreferredSize();
        date_time.setBounds(10, 190, size.width, size.height);
        panel.add(date_time);

        JLabel l = new JLabel("(yyyy-mm-dd)");
        l.setForeground(Color.GRAY);
        size = l.getPreferredSize();
        l.setBounds(10, 200, size.width, size.height);
        panel.add(l);

        create = new JButton("Create");
        size = create.getPreferredSize();
        create.setBounds(225- size.width/2, 230, size.width, size.height);
        panel.add(create);

        //initialise textfields
        for(int i = 0; i< textfields.length; i++){
            textfields[i] = new JTextField();
            textfields[i].setBounds(100, 95+30*i, 300, 25);
            textfields[i].setEditable(true);
            panel.add(textfields[i]);
        }

        //create actionlistener, reading textfields
        create.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                for(int i = 0; i< textfields.length; i++){

                    inputs[i] = textfields[i].getText();
                    System.out.println("-" +textfields[i].getText()+ "-");

                }


            }
        });

        return panel;

    }


}
公共类NewQuizWindow{
私人JPanel小组;
私有JTextField[]textfields=新JTextField[4];
私有字符串[]输入=新字符串[textfields.length];
私有JButton创建;
公共NewQuizWindow(){
panel=新的JPanel();
panel.setLayout(空);
初始化();
}
公共JPanel初始化(){
//打印初始标签、按钮
JLabel l1=新的JLabel(“请填写以下必填字段”);
维度大小=l1.getPreferredSize();
l1.立根(225-尺寸.宽度/2,50,尺寸.宽度,尺寸.高度);
面板。添加(l1);
JLabel title=新JLabel(“title”);
size=title.getPreferredSize();
标题.立根(10100,尺寸.宽度,尺寸.高度);
小组.添加(标题);
JLabel description=新的JLabel(“description”);
size=description.getPreferredSize();
说明.立根(10130,尺寸.宽度,尺寸.高度);
面板。添加(说明);
JLabel位置=新的JLabel(“位置”);
size=location.getPreferredSize();
位置.立根(10160,尺寸.宽度,尺寸.高度);
面板。添加(位置);
JLabel日期\时间=新JLabel(“日期”);
size=date\u time.getPreferredSize();
日期和时间.立根(10190,尺寸.宽度,尺寸.高度);
面板。添加(日期和时间);
JLabel l=新JLabel(“(yyyy-mm-dd)”);
l、 设置前景(颜色:灰色);
size=l.getPreferredSize();
l、 立根(10200,尺寸.宽度,尺寸.高度);
小组.添加(l);
create=新的JButton(“create”);
size=create.getPreferredSize();
创建.setBounds(225-size.width/2230,size.width,size.height);
面板。添加(创建);
//初始化文本字段
for(int i=0;i
您的代码没有显示问题。但是它还有其他问题,包括使用
null
布局和
setBounds(…)
。使用null布局有什么坏处?它对getText()方法有什么影响?它与您的问题无关,但是如上所述,上面的代码没有显示您的问题。尽管这是一个新手Swing程序的标志,因为如果你这么做足够长的时间,你就会知道使用空布局的程序非常难以维护和升级。您最好学习和使用布局管理器,因为它们将为您的程序提供更大的灵活性和功能,并使以后更改它们更容易。但是关于您最初的问题,您需要首先调试以找出它的来源。好的,非常感谢:)