I'm currently working on a project, I'll try to subrscibe first. I save data into text file, that I use as a source for browser of that data. The browser is based on table that contains the data. I have to rewrite the source file everytime I delete or edit data. That's where the problem comes in. After deleting or editing data I call a method to create the table again, but the table never creates. Is it possibly made by editing the file and calling the method right after that? If I restart my app the table is successfully created with right data. Take in note that I don't get any error message.
This is the method I use for loading data from source file:
try (BufferedReader input1 = new BufferedReader(new FileReader("./src/data.src"))) {
int lines = 0;
while (input1.read() != -1) {
if (!(input1.readLine()).equals("")) {
lines++;
}
}
input1.close();
if (lines == 0) {
JOptionPane.showMessageDialog(null, "No data to load, create a note first!");
new Writer().build(frame);
} else {
try (BufferedReader input = new BufferedReader(new FileReader("./src/data.src"))) {
Game[] g = new Game[lines];
String currentLine;
String[] help;
int counter = 0;
while (lines > 0) {
currentLine = input.readLine();
help = currentLine.split("#");
g[counter] = new Game(help[0],help[1], help[2], help[3], help[4], help[5], help[6], help[7], help[8], help[9]);
counter++;
lines--;
}
input.close();
final JButton bButton = new backButton().create(frame, mPanel);
build(g, frame, bButton);
mPanel.add(panel);
mPanel.add(panel2);
mPanel.add(searchPanel);
mPanel.add(bButton);
bButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
panel.removeAll();
frame.setCursor(Cursor.getDefaultCursor());
}
});
mPanel.setPreferredSize(new Dimension(1000, 750));
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
frame.setLayout(new FlowLayout());
frame.add(mPanel);
frame.pack();
JMenuBar menuBar = new Menu().create(frame, mPanel);
frame.setJMenuBar(menuBar);
frame.setVisible(true);
Rectangle rec = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
int width = (int) rec.getWidth();
int height = (int) rec.getHeight();
frame.setBounds(1, 3, width, height);
frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
frame.setLocation(1, 3);
}
});
And this is the method I use for creating the table:
String[][] tableData = new String[g.length][9];
for (int i = 0; i < tableData.length; i++) {
tableData[i][0] = g[i].getChampion();
tableData[i][1] = g[i].getRole();
tableData[i][2] = g[i].getEnemy();
tableData[i][3] = g[i].getDifficulty();
tableData[i][4] = g[i].getResult();
tableData[i][5] = g[i].getScore();
tableData[i][6] = g[i].getGameType();
tableData[i][7] = g[i].getPoints();
tableData[i][8] = g[i].getLeague();
}
final JLabel searchLabel = new JLabel("Search for champion played.");
final JButton searchButton = new JButton("Search");
final JTextField searchText = new JTextField(20);
frame.setTitle("LoL Notepad - reading your notes");
JTable table = new JTable(tableData, columnNames);
final JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(980, 500));
panel2.setPreferredSize(new Dimension(1000, 550));
panel2.setVisible(false);
panel2.setBorder(new EmptyBorder(10, 10, 10, 10));
panel3.setVisible(false);
panel.setLayout(new FlowLayout());
panel.add(scrollPane);
searchPanel.add(searchLabel);
searchPanel.add(searchText);
searchPanel.add(searchButton);
searchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
search(g, searchText.getText(), frame, bButton);
frame.setCursor(Cursor.getDefaultCursor());
} catch (IOException ex) {
Logger.getLogger(Reader.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 1) {
JTable target = (JTable) e.getSource();
panel.setVisible(false);
searchPanel.setVisible(false);
bButton.setVisible(false);
int row = target.getSelectedRow();
specific(row, g, frame, bButton);
}
}
});