Я относительно новичок в java, и я пытаюсь создать программу, которая читает серию информации о разных песнях из txt-файла (позиция, название, художник, ярлык) и позволяет пользователю изменять файл непосредственно через JTextArea, содержащиеся в программе (после нажатия JButton). Я смог обеспечить правильное распознавание из программы всей различной информации, содержащейся в файле (на самом деле я могу вручную добавить больше песен без каких-либо проблем), но я не знаю, как разрешить пользователю изменять файл из JTextArea.Измените txt-файл с помощью JTextArea и JButton
Содержание файла:
1; X; Ширан; ASYLUM;
2; В ОДНОМ ЧАСЕ; САМ СМИТ; КАПИТОЛ;
3; НИКОГДА НЕ БЫЛИ ЛУЧШЕ, OLLY MURS; EPIC;
4; ЧЕТВЕРТЫЙ, ОДИН НАПРАВЛЕНИЕ, СИЗО МУЗЫКА;
5; ХОТЕЛ НА ВОЙДЖ, ДЖОРДЖ ЭЗРА; КОЛУМБИЯ;
CD Группа:
import java.io.*;
import java.util.*;
import javax.swing.*;
public class CDPanel {
private static String newLine = "\n";
public static CD myCD;
public static JTextArea myTextArea = new JTextArea(15, 30);
public static void main(String[] args) throws FileNotFoundException, IOException {
List<Integer> position = new ArrayList<>();
List<String> title = new ArrayList<>();
List<String> artist = new ArrayList<>();
List<String> label = new ArrayList<>();
JButton addCD = new JButton("Press to add the CD");
JFrame frame = new JFrame("CD List");
JPanel panel = new JPanel();
int numberOfLines = 0;
BufferedReader br = new BufferedReader(new FileReader("cd.dat"));
String line = null;
while ((line = br.readLine()) != null) {
String data[] = line.split(";");
for (int i=0; i<4; i++) {
if (i == 0) {
int value = Integer.parseInt(data[i]);
position.add(value);
}
if (i == 1) {
title.add(data[i]);
}
if (i == 2) {
artist.add(data[i]);
}
if (i == 3) {
label.add(data[i]);
}
}
numberOfLines++;
}
for (int i=0; i<numberOfLines; i++) {
myCD = new CD(position.get(i), title.get(i), artist.get(i), label.get(i));
myTextArea.append(String.valueOf(myCD + newLine));
}
panel.add(myTextArea);
panel.add(addCD);
frame.add(panel);
frame.setSize(30, 15);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
CD:
public class CD {
public int position;
public String title, artist, label;
public CD (int positionInit, String titleInit, String artistInit, String labelInit) {
position = positionInit;
title = titleInit;
artist = artistInit;
label = labelInit;
}
public String toString() {
return position + ";" + title + ";" + artist + ";" + label + ";";
}
}
Заранее спасибо за помощь и извините, если мой код (и мой английский) не является совершенным, но опять же, я я новичок в этом мире, и я стараюсь как можно быстрее улучшить свои знания :)
Возможно, вы захотите структурировать информацию в строках и столбцах в JTable или неструктурированном тексте в JTextArea. См. Этот [учебник] (https://docs.oracle.com/javase/tutorial/uiswing/components/table.html). – JasonM1
Также может иметь смысл иметь один «Список» 'содержащий« строки »данных вместо отдельных списков для ваших« столбцов » –
JTextArea имеет методы чтения/записи, но я согласен с JasonM1, JTable - лучший выбор – MadProgrammer