Java 创建新JTextFields时如何访问和存储输入
我试图创建一个模拟组织者/调度器的GUI,但当我插入更多字段供用户输入任务时,我遇到了一个问题。在我的代码中,我有一个按钮用于添加更多字段,另一个按钮用于提交这些字段,但是如果用户选择添加更多字段,我只能访问当前字段,而不能在他们输入submit时访问以前的字段。如何访问以前的字段Java 创建新JTextFields时如何访问和存储输入,java,Java,我试图创建一个模拟组织者/调度器的GUI,但当我插入更多字段供用户输入任务时,我遇到了一个问题。在我的代码中,我有一个按钮用于添加更多字段,另一个按钮用于提交这些字段,但是如果用户选择添加更多字段,我只能访问当前字段,而不能在他们输入submit时访问以前的字段。如何访问以前的字段 import javax.swing.JTextField; import java.awt.event.*; import javax.swing.*; import java.awt.*; import java
import javax.swing.JTextField;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
class Organizer extends JPanel implements ActionListener
{
protected JTextField dateText,taskText, priorityText;
Button addField;
Button submit;
JPanel panel;
Vector<String> Dates = new Vector();
Vector<String> Tasks = new Vector();
Vector<String> Priority = new Vector();
public void createWindow()
{
JFrame frame = new JFrame ("Organizer");
panel = new JPanel();
frame.setVisible(true);
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
addField = new Button("(+)");
addField.addActionListener(this);
panel.add(addField);
submit = new Button ("submit");
submit.addActionListener(this);
panel.add(submit);
addFields();
}
public void addFields()
{
dateText = new JTextField("Enter Date(mon/dd/yyyy)",30);
taskText = new JTextField("Enter Task",30);
priorityText = new JTextField("Rate importance(10-high,1-low)",30);
panel.add(dateText);
panel.add(taskText);
panel.add(priorityText);
}
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == addField)
{
addFields();
panel.revalidate();
panel.repaint();
}
if(evt.getSource() == submit)
{
String temp = dateText.getText();
System.out.println(temp);
//Dates.addElement(temp);
//System.out.println(Dates);
}
}
public static void main (String[] args)
{
Organizer Org = new Organizer();
Org.createWindow();
}
}
import javax.swing.JTextField;
导入java.awt.event.*;
导入javax.swing.*;
导入java.awt.*;
导入java.util.*;
类管理器扩展了JPanel实现ActionListener
{
受保护的JTextField dateText、taskText、priorityText;
按钮添加字段;
按钮提交;
JPanel小组;
向量日期=新向量();
向量任务=新向量();
向量优先级=新向量();
public void createWindow()
{
JFrame=新的JFrame(“组织者”);
panel=新的JPanel();
frame.setVisible(true);
框架。设置尺寸(500500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。添加(面板);
addField=新按钮(“(+)”);
addField.addActionListener(此);
panel.add(addField);
提交=新按钮(“提交”);
submit.addActionListener(this);
专家组。添加(提交);
addFields();
}
公共void addFields()
{
dateText=新的JTextField(“输入日期(mon/dd/yyyy)”,30);
taskText=新的JTextField(“输入任务”,30);
priorityText=新的JTextField(“比率重要性(10高,1低)”,30);
panel.add(日期文本);
panel.add(任务文本);
面板.添加(优先文本);
}
已执行的公共无效操作(操作事件evt)
{
if(evt.getSource()==addField)
{
addFields();
panel.revalidate();
panel.repaint();
}
if(evt.getSource()=提交)
{
String temp=dateText.getText();
系统输出打印项次(温度);
//日期。补遗(临时);
//系统输出打印项次(日期);
}
}
公共静态void main(字符串[]args)
{
组织者组织=新组织者();
Org.createWindow();
}
}
我建议提取一个包含dateText、taskText、priorityText的新面板类,并为添加的面板保留一个列表 每次单击addField
JButton
到ArrayList
时,您需要存储添加到JPanel
的JTextFields
组。在提交时,您可以检索相同的内容。以下是您编写的代码的大致演示:
class FieldsGroup //Represents each group of JTextFields
{
JTextField dateText;
JTextField taskText;
JTextField priorityText;
public FieldsGroup(JTextField dateText,JTextField taskText,JTextField priorityText)
{
this.dateText = dateText;
this.taskText = taskText;
this.priorityText = priorityText;
}
public String getDateText()
{
return dateText.getText();
}
public String getTaskText()
{
return taskText.getText();
}
public String getPriorityText()
{
return priorityText.getText();
}
}
然后在组织者
类中,您应该创建一个数组列表
对象,如下所示:
ArrayList<FieldsGroup> groups = new ArrayList<FieldsGroup>();//Create an ArrayList
if(evt.getSource() == submit)
{
for (FieldsGroup gr : groups)
{
System.out.println(gr.getDateText());
System.out.println(gr.getTaskText());
System.out.println(gr.getPriorityText());
System.out.println("-----------------------------");
}
}
最后将submit
按钮actionPerformed
更改如下:
ArrayList<FieldsGroup> groups = new ArrayList<FieldsGroup>();//Create an ArrayList
if(evt.getSource() == submit)
{
for (FieldsGroup gr : groups)
{
System.out.println(gr.getDateText());
System.out.println(gr.getTaskText());
System.out.println(gr.getPriorityText());
System.out.println("-----------------------------");
}
}
我建议将它们全部添加到一个列表中,然后您可以循环浏览新字段列表。