如何制作由文件中的行分隔的每个字符串的下拉列表

Posted

技术标签:

【中文标题】如何制作由文件中的行分隔的每个字符串的下拉列表【英文标题】:How to make a Dropdown list of every String separated by a line from a file 【发布时间】:2012-08-13 23:48:15 【问题描述】:

如何放置一个包含每个字符串列表的下拉列表,当我在该列表中选择一个项目然后按下加载按钮时,它只会显示该字符串上的内容。这是我的代码,我实际上输入了字符串的编号,并使用 while 语句显示了字符串的数据。

我怎样才能真正放置一个下拉列表,它的内容将是每个字符串上注册的数字。就这样

1 231231

2 123124

3 123124

4 232312

如果我选择 4 并按“加载”,它将显示“232312” 每次我保存数据时,都会在每一行中注册一个唯一编号,就像 “4”是唯一的编号。 232312 是它的数据

package datasaving;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;

public class Datasaving 

    /**
     * @param args the command line arguments
     * @throws FileNotFoundException
     * @throws IOException  
     */
    public static void main(String[] args) throws FileNotFoundException, IOException 
        JPanel panel = new JPanel();
        JFrame frame = new JFrame();
        final JTextField input0 = new javax.swing.JTextField(20);
        final JTextField input1 = new javax.swing.JTextField(20);
        final JTextField out = new javax.swing.JTextField(20);
        final JTextField line = new javax.swing.JTextField(20);

        JButton save = new javax.swing.JButton("Save");
        JButton load = new javax.swing.JButton("Load");
        frame.add(panel);
        frame.setSize(240,200);
        panel.add(input0);
        panel.add(input1);
        panel.add(save);
        panel.add(line);
        panel.add(out);
        panel.add(load);

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);





        save.addActionListener(new ActionListener() 
                            @Override
                            public void actionPerformed(ActionEvent e) 
                                 File file = new File("data.dat");

                            try 
                                 try (FileWriter writer = new FileWriter(file, true)) 
                                 String data0 = input0.getText();
                                 String data1 = input1.getText();
                                 writer.write(data0+":"+data1+"\n");
                                

                                System.out.println("Data Saved");
                                 catch (IOException | HeadlessException z) 
                                JOptionPane.showMessageDialog(null, e);
                                
                                 
                                );
        load.addActionListener(new ActionListener() 
                            @Override
                            public void actionPerformed(ActionEvent e) 

                                 int lines = Integer.parseInt(line.getText());


                                     try 
                                 FileInputStream fs= new FileInputStream("data.dat");
                                 BufferedReader br = new BufferedReader(new InputStreamReader(fs));
                                 for(int i = 0; i < lines; ++i) 
                                 br.readLine();
                                 
                                 out.setText(br.readLine());



                                JOptionPane.showMessageDialog(null, "Loaded");
                                 catch (   IOException | HeadlessException es) 
                                JOptionPane.showMessageDialog(null, e);
                                
                                 


                                );



    

例如: 约翰布拉布拉布拉布拉 基思布拉布拉布拉布拉 乔布拉布拉布拉布拉 肯尼斯布拉布拉布拉布拉布拉 克里斯蒂安布拉布拉布拉布拉 第一个单词“Names”将被添加到 JList 或 JComboBox 如何使名称成为一个数组。我知道如何使用 .split();但我不知道如何在文件的每一行中实现这一点

【问题讨论】:

另见How to Use Lists 【参考方案1】:

1) JTextField 不支持多行。请改用JTextArea。对于文本区域,您可以使用 myTextArea.append() 在阅读时添加行。

2) 但实际上,听起来 JComboBox 或 JList 可能是您真正想要的:

http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html

3) 你的基本程序看起来不错

'希望有帮助!

【讨论】:

例如:John blahblahblahblah Keith blahblahblahblah Joe blahblahblahblah Kenneth blahblahblahblah Christian blahblahblahblah 第一个单词“Names”将添加到 JList 或 JComboBox 如何使名称成为 Array。我知道如何使用 .split();但我不知道如何在文件的每一行中实现这一点

以上是关于如何制作由文件中的行分隔的每个字符串的下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何制作多语言链接文本li菜单和下拉列表?

如何使用 C# 从字符串数组制作类似枚举的 Unity 检查器下拉菜单?

从逗号分隔的字符串 [XML/XSL] 创建选择下拉列表

使用angularjs在html中的表格数据单元格上显示下拉列表

如何隐藏组合框下拉列表中的列?

如何返回由 2 个下拉列表更新的数据表作为 Plotly Python 中的输入