Zapisywanie do pliku a javax swing

0

Witam, mam mały problem. Otóż napisałem sobie niedawno taki mały programik w konsoli. Niektóre z jego funkcji to było właśnie odczytywanie wartości z pliku txt ( liczba double ) i po małych modyfikacjach podczas działania programu zapisywanie nowej wartości do pliku. Robiłem to tak :

Do odczytu :

File file = new File("stan.txt");
		Scanner in = new Scanner(file);
		in.useLocale(new Locale("en")); 
		stan = in.nextDouble();

Do zapisu :

PrintWriter zapis = new PrintWriter("stan.txt"); 
			zapis.println(dStan);
			zapis.close();

No i dobrze wszystko działało. Ale teraz chciałbym napisać ten sam program ale już okienkowy, przy użyciu javax swing i tu w pewnym momencie pojawia się problem. Próbowałem zrobić aby po wpisaniu wartości do textfielda ( np. 50 ,double dWpl ) i kliknięciu buttona "Dodaj", dodana została liczba 50 do stanu który załóżmy że na początku miał wartość 10, to po kliknięciu miał 60 i zapisywał się do pliku .txt. Tak więc stworzyłem textfielda(tfWplata) i buttona(bWplata). Buttonowi dałem ActionListener i w actionPerformed dodałem :

Object obiekt = e.getSource();
		dWpl = Double.parseDouble(tfWplata.getText()); // do zmiennej double przypisuje wartość z textfielda
		
		if(obiekt == bWplata)
		{
			dStan+=dWpl; // zwiększam stan o wartość z textfielda
			lStan.setText(String.valueOf(dStan + " zł")); // wyświetlam w label nową wartość
			PrintWriter zapis = new PrintWriter("stan.txt");  // no i próbuje zapisać...
			zapis.println(dStan + 50);
			zapis.close();
			
		}

A błąd wyskakuje w tej linii :

PrintWriter zapis =__ new PrintWriter("stan.txt");__ 

A ten błąd to :

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
Unhandled exception type FileNotFoundException

at Cele.actionPerformed(Cele.java:172)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Wychodzi na to że muszę dopisać do

public void actionPerformed(ActionEvent e) {

(bo tam znajduje się moje zapisywanie)

throws FileNotFoundException

Ale to nic nie daje. Wciąż jest tak jakby nie mógł odczytać tego pliku stan.txt. Umieściłem go we wszystkich folderach projektu a nawet wcześniej... Jakieś pomysły?

P.S: Używam Eclipse

@Edit
Eclipse podpowiedział mi takie rozwiązanie :

PrintWriter zapis = null;
			try {
				zapis = new PrintWriter("stan.txt");
			} catch (FileNotFoundException e1) {
				zapis.println(dStan + dWpl);
				zapis.close();
				e1.printStackTrace();
			} 

Ale to całkowicie czyści mi stan.txt...

1

A co to niby ma robić? Otwierasz plik w trybie pisania i tyle, więc plik się czyści. Instrukcje pisania do pliku powinny być wewnatrz try a nie wewnatrz catch. W catch() wpadniesz jak poleci wyjątek czyli jak pliku nie będzie.

0

Hah, taki banalny błąd a ja się tu z nim męczę już trzecią godzinę. Wielkie dzięki...

1 użytkowników online, w tym zalogowanych: 0, gości: 1