Printwriter i static list (LinkedList)

0

Witam,
Próbuje stworzyć program, pozwalający stworzyć i edytować listę gości. Mam jednak problem z zapisywaniem tej listy, otóż printwriter wymaga statycznej listy, a wiadomo, że lista powinna być dynamiczna. W wyniku tego zapisuję się w pliku tylko " [] " . Ma ktoś jakiś pomysł? ;) Dzięki

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import java.util.List;
import java.util.LinkedList;
import java.util.Scanner;

public class swing extends JFrame implements ActionListener{

List<String> lista = new LinkedList<String>();
JButton dodaj, usun, wyswietl; 
JRadioButton radio;
JFrame dodano, niedodano;
JTextField pole;
	
public swing(){
	setSize(500,500);
	setTitle("Lista gości");
	
	dodaj = new JButton();
	dodaj.setText("Dodaj");
	setLayout(null);
	dodaj.setBounds(50, 300, 100, 100);
	add(dodaj);
	dodaj.addActionListener(this);
	
	usun = new JButton();
	usun.setText("Usuń");
	setLayout(null);
	usun.setBounds(200,300,100,100);
	add(usun);
	usun.addActionListener(this);
	
	wyswietl = new JButton();
	wyswietl.setText("Wyświetl");
	setLayout(null);
	wyswietl.setBounds(350,300,100,100);
	add(wyswietl);
	wyswietl.addActionListener(this);
	
	radio = new JRadioButton();
	radio.setText("Osoba towrzysząca");
	radio.setBounds(300, 250, 200, 20);
	add(radio);

    pole = new JTextField();
    pole.setBounds(50, 50, 300,50);
    add(pole);
    pole.addActionListener(this);
    
}



public static void main(String[] args) throws FileNotFoundException {
	
	
	swing okienko = new swing();
	okienko.setVisible(true);
	
	zapis();
	

	
}




	public void actionPerformed(ActionEvent e) {
		
		Object źródło = e.getSource();
		
		
		if(źródło==dodaj){
			lista.add(pole.getText());
				
		}
		else if(źródło==usun){
			lista.remove(pole.getText());
		}
		
		if(źródło==wyswietl){
			//Scanner odczyt = new Scanner(new File("lista.txt"));
			//odczyt.close();
		}
		
		
}
	public static void zapis() throws FileNotFoundException{
		
		
		PrintWriter zapis = new PrintWriter("lista.doc");
		zapis.print(lista);  // cannot make a static reference to the non-static field lista
		zapis.close();
	}

}
0

PrintWriter nie wymaga listy statycznej. Natomiast metoda statyczna (u Ciebie zapis) nie może korzystać z pól, które nie są static.

    public static void main(String[] args) throws FileNotFoundException {
        swing okienko = new swing();
        okienko.setVisible(true);
        okienko.zapis(); 
    }
    ...
    public void zapis() throws FileNotFoundException{

Dodaj też jakąś możliwość zakończenia programu.

0

Problem zażegnany, aczkolwiek w pliku lista.doc zapisuje tylko " [] ". Hmm.

public static void main(String[] args) throws FileNotFoundException {
	
	
	swing okienko = new swing();
	okienko.setVisible(true);
	
	okienko.zapis();
	okienko.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	
}
0

A co by się miało zapisać? Kiedy wywołujesz okienko.zapis(), to lista jest jeszcze pusta, niczego do niej nie dodałeś.

0

No niby logiczne :D

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