如何拆分TXT文件数据至数组,为JLabel设置文本?(附JTable导入代码)
如何拆分TXT文件中的商品数据到对应数组/字符串?
没问题,我来帮你搞定这个需求!你已经能把数据导入JTable了,要拆分ID、商品名称、价格、库存到单独的数组/集合其实很简单,只需要在现有代码基础上添加几个存储容器,然后在循环读取每行数据的时候把对应字段存进去就行。
解决方案代码
我们可以用ArrayList来存储这些数据(比固定长度的数组更灵活,适合不确定行数的情况),修改后的代码如下:
String filePath = "C:\\Users\\zagad\\IdeaProjects\\DATABYTES\\stock\\consoles\\consoles.txt"; File file = new File(filePath); // 定义四个集合分别存储对应字段 List<String> idList = new ArrayList<>(); List<String> itemNameList = new ArrayList<>(); List<String> priceList = new ArrayList<>(); List<String> stockList = new ArrayList<>(); try { BufferedReader br = new BufferedReader(new FileReader(file)); String firstLine = br.readLine().trim(); String[] columnsName = firstLine.split(", "); DefaultTableModel model3 = (DefaultTableModel) productTable.getModel(); model3.setColumnIdentifiers(columnsName); Object[] tableLines = br.lines().toArray(); for (int i = 0; i < tableLines.length; i++) { String line = tableLines[i].toString().trim(); String[] dataRow = line.split("/"); // 注意先去除每个字段前后的空格,避免数据带空格 String id = dataRow[0].trim(); String itemName = dataRow[1].trim(); String price = dataRow[2].trim(); String stock = dataRow[3].trim(); // 将字段添加到对应集合 idList.add(id); itemNameList.add(itemName); priceList.add(price); stockList.add(stock); model3.addRow(dataRow); } } catch (IOException ex) { ex.printStackTrace(); }
代码说明
- 首先我们初始化了四个
ArrayList,分别对应ID、商品名称、价格、库存的存储,这样不管TXT里有多少条数据都能轻松容纳。 - 在循环处理每行数据时,我们先把拆分后的每个字段用
trim()去除前后空格(因为你的TXT文件里/前后有空格,比如00016 / Apple Airpods,拆分后dataRow[0]会带空格),保证数据干净。 - 把处理后的字段分别添加到对应的集合中,之后你就可以直接用这些集合来设置JLabel的文本了。
如何用于设置JLabel文本
比如你要显示第1条商品(索引从0开始)的信息:
// 设置ID的JLabel idLabel.setText("ID: " + idList.get(0)); // 设置商品名称的JLabel itemNameLabel.setText("商品名称: " + itemNameList.get(0)); // 设置价格的JLabel priceLabel.setText("价格: " + priceList.get(0)); // 设置库存的JLabel stockLabel.setText("库存: " + stockList.get(0));
如果你的TXT文件行数固定,也可以改用固定长度的数组,比如先获取tableLines.length,然后初始化数组:
int lineCount = tableLines.length; String[] idArray = new String[lineCount]; String[] itemNameArray = new String[lineCount]; // ... 其他数组初始化 // 循环中赋值 idArray[i] = dataRow[0].trim(); itemNameArray[i] = dataRow[1].trim(); // ... 其他字段赋值
这样就完全满足你拆分数据用于设置JLabel文本的需求啦!
内容的提问来源于stack exchange,提问作者James Zagada
相关产品推荐
相关产品推荐

