Witam,
mam zamiar nauczyć się zapisywania i wczytywania różnych danych z plików (np. txt). Napisałem kod, w którym jest zastosowane wczytywanie jak i również zapisywanie, a żeby było widać na panelu pojawia się kwadrat, który zmienia położenie w losowej kolejności. Chciałbym, żeby program zapamiętywał ostatnio wylosowaną daną "x". Niestety program wczytuje x jako 100 co jest prawidłowe bo tak mam określone w pliku www.txt, ale nie nadpisuje tej wartości. Oto kod:
import javax.swing.JFrame;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.*;
public class Zapis extends JFrame
{
JButton losuj;
JPanel panel;
int x = 20;
int y = 20;
File file = new File("C:\\Users\\Wiesław\\Desktop\\www.txt");
public void Zapis()
{
try{
BufferedReader input = new BufferedReader(new FileReader(file));
String line = input.readLine();
System.out.println(line);
x = Integer.parseInt(line);
System.out.println("number: " + x);
}catch (FileNotFoundException ex) {
}
catch (Exception e) {
e.printStackTrace();
}
teraz teraz = new teraz();
losuj = new JButton("Losuj");
panel = new JPanel();
losuj.addActionListener(new losujact());
this.add(BorderLayout.CENTER, teraz);
this.add(BorderLayout.WEST,losuj);
this.setSize(300,300);
this.setVisible(true);
}
class losujact implements ActionListener
{
public void actionPerformed(ActionEvent zdarzenie)
{
x = (int)(100*Math.random());
y = (int)(100*Math.random());
repaint();
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("www.txt"));
os.writeObject(x);
os.close();
} catch (IOException e) {
e.printStackTrace();
System.err.print("Błąd zapisu");
}
}
}
class teraz extends JPanel
{
public void paint (Graphics o)
{
o.setColor(Color.white);
o.fillRect(x,y,10,10);
}
}
public static void main(String[] args)
{
Zapis Zapis = new Zapis();
Zapis.Zapis();
}
}