Java JList и JTextArea

110
14

Я застрял в проекте java. Я работаю с TXT файлами, и я открываю эти TXT файлы из JList. Поскольку я полный Noob в этом, мне потребовалось несколько часов, чтобы заставить JList работать. Но теперь я застрял в JTextArea. Идея заключается в следующем: нажав на элемент из JList (item = TXT файл из папки), он должен открыть этот TXT файл в JTextArea для его просмотра.

.. есть мой код до сих пор.. немного долго:

-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);

-This - это код 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");

}

}
});

-All мне удалось сделать, когда я выбираю элемент из JList, он печатает имя элемента в JTextArea, а не то, что он содержит в TXT. Вот фотография, которая покажет вам: picture

кто-нибудь может помочь мне с этим... у меня есть нулевая идея... я читал о JList и JTextArea, но ничто даже не указывает на то, что мне нужно...

Пожалуйста помоги.

спросил(а) 2021-01-19T16:21:05+03:00 6 месяцев назад
1
Решение
125

Я СДЕЛАЛ ЭТО!!! Здесь код:

            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

ответил(а) 2021-01-19T16:21:05+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема