【问题标题】:How to populate two combo box in Java from a text file?如何从文本文件中填充 Java 中的两个组合框?
【发布时间】:2023-03-07 16:30:01
【问题描述】:

我正在尝试从数据中填充两个组合框,但不知道如何在两个组合框之间划分此数据。数据现在填充在两个组合框中。

这是我的数据文本文件:

[Gates]
value1
value2
value3

[Mids]
customer1
customer2

这是我在 Java Swing Gui 应用程序中的代码:

private void populateCombos() throws FileNotFoundException {

    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    int result = fileChooser.showOpenDialog(frmGottApplication);

    BufferedReader input=new BufferedReader(new FileReader(fileChooser.getSelectedFile()));
    if (result == JFileChooser.APPROVE_OPTION) {
        selectedFile = fileChooser.getSelectedFile();
        textFieldLoadConfig.setText(selectedFile.getAbsolutePath());
        lblConfRes.setText("Loaded " + selectedFile.getAbsolutePath().toString());
    } else {
        lblConfRes.setText("You didn't load...");
    }
    List<String> strings = new ArrayList<String>();
    try {
        String line = null;
        try {
            while ((line = input.readLine()) != null) {
                strings.add(line);
            }
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } finally {
        try {
            input.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
    String[] lineArrayGates = strings.toArray(new String[] {});

    comboBoxGate.removeAllItems();
    comboBoxMid.removeAllItems();

    for (String str : lineArrayGates) {
        comboBoxGate.addItem(str);
        comboBoxMid.addItem(str);
    }
}

从代码中可以看出,我正在从外部文本文件中读取数据,然后尝试将其加载到两个不同的组合框中。但是如何编写将门的值划分为第一个组合并将中间的值划分为第二个组合的代码。 有什么想法可以建议吗? 谢谢

【问题讨论】:

    标签: java swing combobox jcombobox


    【解决方案1】:

    问题从文件及其内容开始,定义一个格式更舒服的属性文件……你可以使用json、xml、yaml,或者只是属性……

    我将使用老式的 java 属性来做示例​​p>

    文件:

    盖茨=value1,value2,value3

    Mids=customer1,customer2

    然后将其读取为属性,将其拆分为 StringArray 并用它填充 Boxes

    public static void main(String[] args) {
    Properties prop = new Properties();
    InputStream input = null;
    
    try {
        input = new FileInputStream("./file2.txt");
        prop.load(input);
        String[] gates = prop.getProperty("Gates").split(",");
        String[] mids = prop.getProperty("Mids").split(",");
        JFrame myJFrame = new JFrame();
        myJFrame.setTitle("Example");
        myJFrame.setSize(250, 250);
        JPanel panel = new JPanel();
    
        JComboBox<String> myComboGates = new JComboBox<>(gates);
        JComboBox<String> myComboMids = new JComboBox<>(mids);
        panel.add(myComboGates);
        panel.add(myComboMids);
    
        myJFrame.add(panel);
        myJFrame.setVisible(true);
    
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (input != null) {
        try {
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        }
    }
    
    }
    

    结果是 2 个组合,来自一个道具的 2 种不同类型的信息。文件:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多