Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ArrayList中的对象获取数据到GUI_Java_User Interface_Arraylist - Fatal编程技术网

Java 从ArrayList中的对象获取数据到GUI

Java 从ArrayList中的对象获取数据到GUI,java,user-interface,arraylist,Java,User Interface,Arraylist,我有一个输入文件,其中有几个字段由空格分隔,如下所示: 10416-555-6666伯吉斯15 15 905-777-8888托马斯10 20 905-111-2222莫里斯5号 我有一个单独的类文件“记录”,它与输入文件相关,该文件包含ID、电话、姓名、工作年限 在我的主要方法中,我创建了一个名为employeeList的“Record”对象的ArrayList。ArrayList由while循环填充,该循环将读取的输入文件拆分为记录构造函数定义的类别 我的下一个任务是创建一个GUI,它可以

我有一个输入文件,其中有几个字段由空格分隔,如下所示:

10416-555-6666伯吉斯15
15 905-777-8888托马斯10
20 905-111-2222莫里斯5号

我有一个单独的类文件“记录”,它与输入文件相关,该文件包含ID、电话、姓名、工作年限

在我的主要方法中,我创建了一个名为employeeList的“Record”对象的ArrayList。ArrayList由while循环填充,该循环将读取的输入文件拆分为记录构造函数定义的类别

我的下一个任务是创建一个GUI,它可以显示和循环输入文件,但我在设计文本字段中显示“记录”对象的方式时遇到了困难。我在下面附上了一张图片,展示了我想要得到的东西:



“下一个员工”按钮将循环到ArrayList上的下一项,即下一个记录对象。我已经在下面附上了我的代码,如果您对下一步的操作有任何建议(制作一个显示ArrayList项的GUI),我将不胜感激

包javaapplication4;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.PrintWriter;
导入java.util.*;
导入javax.swing.*;
导入java.awt.*;
公共类应用程序{
私有jf框架;
私人JPanel p;
私人按钮b1;
私人JLabel实验室;
私有区域empID;
私人区域电话;
私人区域名称;
私人住宅区年检;
公共应用程序(){
gui();
}
公共静态void main(字符串[]args)引发FileNotFoundException{
File inputFile=新文件(“Emp.txt”);
扫描仪输入=新扫描仪(输入文件);
ArrayList employeeList=新建ArrayList();
while(在.hasNextLine()中){
String line=in.nextLine();
字符串[]peopleInfo=line.split(\\s+);
int empId=Integer.parseInt(peopleInfo[0]);
字符串电话=peopleInfo[1];
字符串名称=peopleInfo[2];
int years_of_Work=Integer.parseInt(peopleInfo[3]);
添加(新记录(员工ID、电话、姓名、工作年限);
}
新应用程序();
}
公共用户界面(){
f=新的JFrame(“UpdateEmp”);
f、 setVisible(真);
f、 设置大小(600400);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p=新的JPanel();
b1=新的按钮(“测试”);
lab=新的JLabel();
empID=JTextField();
电话=JTextField();
name=JTextField();
yearsWorked=新JTextField();
p、 添加(b1);
p、 添加(实验室);
f、 加(p);
}
}

您需要将记录列表移动到需要访问它的类(
App
),而不是作为
main
方法中的局部变量。您还需要一个实例变量来记录当前记录的索引:

class App {
    private final List<Record> records = new ArrayList<>();
    private int currentRecord = 0;
    ...
}
要显示记录,需要使用方法设置已创建的字段以及“下一步”和“上一步”方法

private void showRecord() {
    assert currentRecord >= 0 && currentRecord < records.size();
    Record record = records.get(currentRecord);
    telephoneField.setText(record.getTelephone());
    ...
}

private void previous() {
    if (currentRecord > 0) {
        currentRecord--;
        showRecord();
    }
}

private void next() {
    if (currentRecord < records.size() - 1) {
        currentRecord++;
        showRecord();
    }
}
private void showRecord(){
断言currentRecord>=0&¤tRecord0){
当前记录--;
showRecord();
}
}
二等兵{
如果(currentRecord
应用程序需要显示员工列表。所以你应该把它传递给它的构造函数,并将它存储到一个字段中。有很多方法可以做到这一点,这取决于你想让它快速完成还是精心设计。
App app = new App();
app.readRecords();
app.showGui();
private void showRecord() {
    assert currentRecord >= 0 && currentRecord < records.size();
    Record record = records.get(currentRecord);
    telephoneField.setText(record.getTelephone());
    ...
}

private void previous() {
    if (currentRecord > 0) {
        currentRecord--;
        showRecord();
    }
}

private void next() {
    if (currentRecord < records.size() - 1) {
        currentRecord++;
        showRecord();
    }
}