繁体   English   中英

如何读取txt文件的特定行并显示到JTable

[英]How to read specific lines of a txt file and display to JTable

我正在尝试将 txt 文件显示到我的JTable中。 目的是显示用户名和帐户类型。 我已经设置了一个JComboBox ,它有AdminsCashiers选项。

txt 文件用于登录屏幕,它存储在一个 txt 文件中。 这仅适用于学校项目。

admin.txt的 txt 文件内容:

Username:admin
Password:password
Type:admin

Username:admin2
Password:password2
Type:admin

Output:

在此处输入图像描述

这是代码:

 String filePath = "C:\\Users\\zagad\\IdeaProjects\\DATABYTES\\login\\admin.txt";
                File file = new File(filePath);
                try {
                    BufferedReader br = new BufferedReader(new FileReader(file));
                    DefaultTableModel model = (DefaultTableModel) userTable.getModel();
                    Object[] tableLines = br.lines().toArray();

                    for (int i = 0; i < 7; i++) {
                        String line = tableLines[i].toString().trim();
                        String[] dataRow = line.trim().split(" ");
                        model.addRow(dataRow);
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

我想要的是隐藏文本“ Username: , Password: and Type: ”。 我只想在左侧显示用户名,在右侧显示帐户类型,即 admin。

我不确定如何编写代码来拆分它并将它们显示到它们后面的JTable单元格中。 而且,用户将添加更多帐户,因此列表会更长,格式相同。

任何帮助将不胜感激谢谢!

预计 output:

在此处输入图像描述

尝试代码后:

在此处输入图像描述

您需要解析文件中的数据。

一种方法可能是为每对数据创建一个HashMap

然后当你阅读文件中的每一行时,你会:

  1. 将数据拆分为两个字段
  2. 将数据添加到 HashMap
  3. 当 HashMap 中有 3 个项目时,现在是时候将数据添加到 TableModel 中了。 然后你清除 HashMap。

所以基本结构可能是这样的:

HashMap<String, String> userInfo = new HashMap<String, String>();

//for (int i = 0; i < 7; i++) // don't make assumptions about the size
for (int i = 0; i < tableLines.length; i++) 
{
    String line = tableLines[i].toString().trim();
    String[] dataRow = line.trim().split(" "); // why are you splitting on " "???
    userInfo.put(dataRow[0], dataRow[1]);

    if (userInfo.size() == 3)
    {
        Vector<String> row = new Vector<String>();
        row.add( userInfo.get("Username") );
        row.add( userInfo.get("Type") );
        model.addRow( row );
        userInfo.clear();
    }
}

当然,此解决方案假定数据始终采用正确的格式。 您还需要空白行的错误检查代码,因为split(…)方法不会返回任何数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM