Java - не записывает данные в файл по нажатию на кнопку

public class Okno extends JFrame {
    private JButton WyborProgramu = new JButton("Wybor programu");
    private JButton ZmianaUstawien = new JButton("Zmiana ustawien");
    private JButton NagrywanieProgramow = new JButton("Nagrywanie programow");
    private JButton OdtwarzanieProgramow = new JButton("Odtwarzanie programow");
    private JButton YouTube = new JButton("YouTube");
    private JButton Przegladarka = new JButton("Przegladarka");
    private JButton DziennikPracy = new JButton("Dziennik Pracy");
    
    public JTextField kontrastdane = new JTextField("", 10);
    public JTextField dzwiekdane = new JTextField("", 10);
    
    public JTextField nazwawideo = new JTextField("", 10);
    public JTextField nazwafilmu = new JTextField("", 10);
    
        public Okno() {
        super("Symulator pracy telewizora");
        this.setBounds(800, 400, 300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        Container container = this.getContentPane();
        container.setLayout(new GridLayout(4, 2, 20, 20));
        container.add(WyborProgramu);
        container.add(ZmianaUstawien);
        container.add(NagrywanieProgramow);
        container.add(OdtwarzanieProgramow);
        container.add(YouTube);
        container.add(Przegladarka);
        container.add(DziennikPracy);
        
        WyborProgramu.addActionListener(new WyborProgramu ());
        ZmianaUstawien.addActionListener(new ZmianaUstawien ());
        NagrywanieProgramow.addActionListener(new NagrywanieProgramow ());
        OdtwarzanieProgramow.addActionListener(new OdtwarzanieProgramow ());
//        YouTube.addActionListener(new YouTube ());
//        Przegladarka.addActionListener(new Przegladarka ());
        DziennikPracy.addActionListener(new DziennikPracy ()); 
    }
}
public class ZmianaUstawien implements ActionListener {
    public void actionPerformed (ActionEvent ee) {
        BufferedReader br = null;
        Panel panel = new Panel();
        panel.setLayout(new FlowLayout());
        try {
        Date date = new Date();
        String filePath = "UzywaniaTelewizora.txt";
        String text = new String("Funkcja - zmiana ustawien - " + date + "\n");
        try {
            Files.write(Paths.get(filePath), text.getBytes(), StandardOpenOption.APPEND);
        }
        catch (IOException e) {
            System.out.println(e);
        }
            br = new BufferedReader(new FileReader("Ustawienia.txt"));
            String line;
            while((line = br.readLine()) != null) {
                JLabel ustawienie = new JLabel(line);
                panel.add(ustawienie);
            }
                JButton zmienustawienia = new JButton("Zmien ustawienia");
                panel.add(zmienustawienia);
                zmienustawienia.addActionListener(new ZmienUstawienia ());



            JOptionPane.showMessageDialog(null, panel, "Ustawienia", JOptionPane.PLAIN_MESSAGE);
        }
        catch(IOException e) {
            System.out.println("Error: " + e);
        }
        finally {
            try { br.close(); }
            catch(IOException e) { System.out.println("Error: " + e); }
            }
        }
}
public class ZmienUstawienia extends Okno implements ActionListener {
    public void actionPerformed (ActionEvent ee) {
    Panel panel = new Panel();
    panel.setLayout(new FlowLayout());
    JLabel kontrast = new JLabel("Kontrast - ");
    JLabel dzwiek = new JLabel("Dzwiek - ");
    JButton ZapiszUstawienia = new JButton("Zapisz ustawienia");
    panel.add(kontrast);
    panel.add(kontrastdane);
    panel.add(dzwiek);
    panel.add(dzwiekdane);
    panel.add(ZapiszUstawienia);
    ZapiszUstawienia.addActionListener(new ZapiszUstawienia ());
    JOptionPane.showMessageDialog(null, panel, "Ustawienia", JOptionPane.PLAIN_MESSAGE);
    }
}
public class ZapiszUstawienia extends Okno implements ActionListener {
    public void actionPerformed (ActionEvent ee) {
    String kontrast = "Kontrast - " + kontrastdane.getText() + "%\n";
    String dzwiek = "Dzwiek - " + dzwiekdane.getText() + "%\n";
        BufferedReader br = null;
        try {
            File file = new File("Ustawienia.txt");
            if(!file.exists())
                file.createNewFile();
        PrintWriter pw = new PrintWriter(file);
        pw.print(kontrast);
        pw.print(dzwiek);
        pw.close();

        } catch (IOException e) {
            System.out.print("Error: " + e);
        }
        JOptionPane.showMessageDialog(null, "Ustawienia zostaly zmienione", "Ustawienia", JOptionPane.PLAIN_MESSAGE);


    }
}

Создаю текстовые поля ↓

    public JTextField kontrastdane = new JTextField("", 10);
    public JTextField dzwiekdane = new JTextField("", 10);

Здесь добавляю их на панель ↓

    panel.add(kontrastdane);
    panel.add(dzwiekdane);

А здесь пытаюсь считать данные а потом записать их в файл ↓

    String kontrast = "Kontrast - " + kontrastdane.getText() + "%\n";
    String dzwiek = "Dzwiek - " + dzwiekdane.getText() + "%\n";

Но данные в файл не записываются, не знаю в чем проблема, или в получении из текстовых полей или
в записи в файл, кто может подсказать?


Ответы (1 шт):

Автор решения: Roman C

Перед закрытием потока желательно выполнить проверку на ошибки, все ли записано.

    PrintWriter pw = new PrintWriter(file);
    pw.print(kontrast);
    pw.print(dzwiek);
    pw.checkError():
    pw.close();
→ Ссылка