我正在制作一个GUI,其中有6个组合框,我从文本文件读取数据到这些
组合框。我的文本文件具有3行和2列,因此当我读取数据时,只有前2个组合框填充有文本文件第3行而不是第1行的值的数据,其余的组合框仍然保留空。我的文本文件包含6个值,应在6个组合框中显示。请帮助

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

public class Read extends JPanel {
    public Read() {
        JPanel buttonPanel = new JPanel();
        add(buttonPanel);
        buttonPanel.setLayout(new GridLayout(0, 2, 5, 5));

        JComboBox comboBox1 = new JComboBox();
        comboBox1.addItem("1");
        comboBox1.addItem("2");
        comboBox1.addItem("4");

        JComboBox comboBox2 = new JComboBox();
        comboBox2.addItem("1");
        comboBox2.addItem("2");
        comboBox2.addItem("4");

        JComboBox comboBox3 = new JComboBox();
        comboBox3.addItem("1");
        comboBox3.addItem("2");
        comboBox3.addItem("4");

        JComboBox comboBox4 = new JComboBox();
        comboBox4.addItem("1");
        comboBox4.addItem("2");
        comboBox4.addItem("4");

        JComboBox comboBox5 = new JComboBox();
        comboBox5.addItem("1");
        comboBox5.addItem("2");
        comboBox5.addItem("4");

        JComboBox comboBox6 = new JComboBox();
        comboBox6.addItem("1");
        comboBox6.addItem("2");
        comboBox6.addItem("4");

        buttonPanel.add(comboBox1);
        buttonPanel.add(comboBox2);
        buttonPanel.add(comboBox3);
        buttonPanel.add(comboBox4);
        buttonPanel.add(comboBox5);
        buttonPanel.add(comboBox6);

        try{
            InputStream ips=new FileInputStream("tl.txt");
            InputStreamReader ipsr=new InputStreamReader(ips);
            BufferedReader br=new BufferedReader(ipsr);
            String line;
            while ((line=br.readLine())!=null) {
                String[] s = line.split(" ");
                comboBox1.setSelectedItem(s[0]);
                comboBox2.setSelectedItem(s[1]);
            }
            br.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        Read a = new Read();
        JFrame f = new JFrame("");
        f.getContentPane().add(a);
        f.setSize(300,200);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }
}


文本文件

2 4
1 2
4 1

最佳答案

声明一个JCombobox数组,并将您所有的JCombobox存储在该数组中,如下所示,

    JComboBox[] comboBoxs = new JComboBox[6];
    comboBoxs[0] = comboBox1;
    comboBoxs[1] = comboBox2;
    comboBoxs[2] = comboBox3;
    comboBoxs[3] = comboBox4;
    comboBoxs[4] = comboBox5;
    comboBoxs[5] = comboBox6;


声明Arraylist并存储您从文件中读取的数据,如下所示,

// Other code goes here.
ArrayList<String> list = new ArrayList<String>();
String line;
    while ((line=br.readLine())!=null) {
        String[] s = line.split(" ");
        list.add(s[0]);
        list.add(s[1]);
    }
br.close();


最后,遍历每个Arraylist并填充组合框。

for(int i = 0; i < comboBoxs.length; i++) {
        comboBoxs[i].setSelectedItem(list.get(i));
    }


这应该很好。

09-04 14:46
查看更多