Java 获取JTextField用户输入返回初始空值
在JTextFields中键入新文本时,getText在按下create按钮时会一直返回JTextFields的初始空值。应该添加哪些方法来将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
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程序的标志,因为如果你这么做足够长的时间,你就会知道使用空布局的程序非常难以维护和升级。您最好学习和使用布局管理器,因为它们将为您的程序提供更大的灵活性和功能,并使以后更改它们更容易。但是关于您最初的问题,您需要首先调试以找出它的来源。好的,非常感谢:)