Java JList和JTextArea

时间:2016-03-26 19:01:07

标签: jlist

我被困在一个java项目上。 我正在使用TXT文件,我从JList打开这些TXT文件。 由于我是一个完全的菜鸟,我花了几个小时来设法使JList工作。但现在我被困在JTextArea。 这个想法是这样的:单击JList中的项目(item =文件夹中的TXT文件),它应该打开JTextArea中的TXT文件来查看它。

..到目前为止,这是我的代码..有点长:

-JButton用于搜索并将TXT文件放在JList中:

            JButton searchSearchButton = new JButton("Search");
            searchSearchButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {    

                    DefaultListModel model1 = new DefaultListModel();

                    File dir = new File("C:\\Users\\Zoli\\Desktop\\New folder");
                    File[] matches = dir.listFiles(new FilenameFilter() {
                        public boolean accept(File dir, String name) {
                            return name.startsWith(searchKeywordTextField.getText()) && name.endsWith(".txt");
                        }                       
                    });

                    for(File f : matches){
                        model1.addElement(f.getName());
                    }

                    searchList.setModel(model1);                    
                }
            });
            searchSearchButton.setBounds(186, 43, 89, 23);
            linuxSearchPane.add(searchSearchButton);

- 这是JTextArea和JList代码:

            final JTextArea searchTextArea = new JTextArea();
            JScrollPane searchTextAreaScrollPane = new JScrollPane(searchTextArea);
            searchTextAreaScrollPane.setBounds(316, 43, 496, 430);
            linuxSearchPane.add(searchTextAreaScrollPane);

            final JList searchList = new JList();
            searchList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            searchList.setVisibleRowCount(20);
            searchList.addListSelectionListener(new ListSelectionListener() {               
                public void valueChanged(ListSelectionEvent e) {
                    searchTextArea.setText("");

                    for(Object o : searchList.getSelectedValuesList()){
                        searchTextArea.append(o.toString()+"\r\n");

                    }

                }
            });

- 我设法做的是,当我从JList中选择一个项目时,它会打印出JTextArea中的项目名称,而不是它在TXT中包含的内容。 这是给你的照片: picture

任何人都可以帮我解决这个问题......我没有想法......我读过有关JList和JTextArea的内容,但没有任何内容可以指出我需要的内容......

请帮忙。

1 个答案:

答案 0 :(得分:0)

我说它! 这是代码:

            final JTextArea searchTextArea = new JTextArea();
            JScrollPane searchTextAreaScrollPane = new JScrollPane(searchTextArea);
            searchTextAreaScrollPane.setBounds(316, 43, 496, 430);
            linuxSearchPane.add(searchTextAreaScrollPane);

            final JList searchList = new JList();
            searchList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            searchList.setVisibleRowCount(20);
            searchList.addListSelectionListener(new ListSelectionListener() {               
                public void valueChanged(ListSelectionEvent e) {
                    searchTextArea.setText("");
                    String root = "C:\\Users\\Zoli\\Desktop\\New folder\\";
                    String filename;
                    String lineRead = "";
                    String fileContent = "";

                    try {                       
                        for(Object o : searchList.getSelectedValuesList()){
                            filename = o.toString();    
                            FileReader reader = new FileReader(root + filename);
                            BufferedReader buffer = new BufferedReader(reader);

                            while(lineRead != null){
                                try {
                                    lineRead = buffer.readLine();
                                } catch (IOException e1) {
                                    e1.printStackTrace();
                                }
                                if(lineRead != null){
                                    fileContent = fileContent + lineRead + "\r\n";
                                    searchTextArea.setText(fileContent);
                                }
                            }


                        }

                    } catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }


                }
            });

此处还有图片,了解其工作原理:picture