• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zamykanie pliku nawet przy wyborze NIE

Object Storage Arubacloud
+1 głos
120 wizyt
pytanie zadane 11 maja 2021 w Java przez krukWiesio Początkujący (400 p.)
zamknięte 16 maja 2021 przez krukWiesio

Witam. Mam problem z programem napisanym w javie a mianowicie przy wyjściu z programu jest pytanie czy na pewno i niestety wychodzi on nawet po wciśnięciu NO...

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class NoteFrame extends JFrame implements Runnable, ActionListener {
    private JMenuBar menuBar;
    private JMenu mPlik, mEdycja, mPomoc;
    private JMenuItem iNowy, iOtworz, iZapisz, iZapiszJako, iZamknij, iGodzinaData, iInormacje;
    private JTextArea notatnik;
    private JComboBox nCzcionka;
    private JTextField rCzcionka;
    private JButton bZatwierdz;
    private File plik;
    private CloseAction ca = new CloseAction();
    private ZmienWielkosc zw = new ZmienWielkosc();

    public static void main(String[] args) {
        EventQueue.invokeLater(new NoteFrame("Notatnik"));

    }

    public NoteFrame(String title) {
        super(title);
        Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension dim = tk.getScreenSize();
        setSize(new Dimension(dim.width / 2, dim.height / 2));
        addWindowListener(new WindowClosingAdapter());

        menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        mPlik = new JMenu("Plik");
        mEdycja = new JMenu("Edycja");
        mPomoc = new JMenu("Pomoc");


        iNowy = new JMenuItem("Nowy");
        iNowy.addActionListener(this);
        iOtworz = new JMenuItem("Otwórz");
        iOtworz.addActionListener(this);
        iZapisz = new JMenuItem("Zapisz");
        iZapisz.addActionListener(this);
        iZapiszJako = new JMenuItem("Zapisz jako");
        iZapiszJako.addActionListener(this);
        iZamknij = new JMenuItem(ca);
        iZamknij.addActionListener(this);

        iGodzinaData = new JMenuItem("Godzina/Data");
        iGodzinaData.addActionListener(this);

        iInormacje = new JMenuItem("Informacje");
        iInormacje.addActionListener(this);

        bZatwierdz = new JButton(zw);


        nCzcionka = new JComboBox();
        rCzcionka = new JTextField(4);
        nCzcionka.setMaximumSize(new Dimension(200, 30));
        rCzcionka.setMaximumSize(new Dimension(40, 30));


        mPlik.add(iNowy);
        mPlik.add(iOtworz);
        mPlik.add(iZapisz);
        mPlik.add(iZapiszJako);
        mPlik.add(iZamknij);

        mEdycja.add(iGodzinaData);

        mPomoc.add(iInormacje);

        menuBar.add(mPlik);
        menuBar.add(mEdycja);

        menuBar.add(mPomoc);
        menuBar.add(nCzcionka);
        menuBar.add(rCzcionka);
        menuBar.add(bZatwierdz);
        nCzcionka.addItem("Times roam");
        nCzcionka.addItem("Arial");
        nCzcionka.addItem("Georgia");
        nCzcionka.addItem("Helvetica");
        nCzcionka.addActionListener(this);

        notatnik = new JTextArea();
        JScrollPane scrol = new JScrollPane(notatnik);
        add(scrol);
        setJMenuBar(menuBar);
        notatnik.setFont(new Font(null, 1, 25));
    }

    @Override
    public void run() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object a = e.getSource();
        if (a == iZapisz) {
            zapisz();
        }



         else if(a==nCzcionka){
            String czcionka = nCzcionka.getSelectedItem().toString();
            if(czcionka.equals("Georgia")) {
                notatnik.setFont(new Font("georgia", 1, notatnik.getFont().getSize()));
                notatnik.setLayout(null);
                notatnik.setVisible(true);
            }
            else if(czcionka.equals("Arial")) {
                notatnik.setFont(new Font("arial", 1, notatnik.getFont().getSize()));
                notatnik.setLayout(null);
                notatnik.setVisible(true);
            }
            else if(czcionka.equals("Times roam")) {
                notatnik.setFont(new Font("TimesRoman", 1, notatnik.getFont().getSize()));
                notatnik.setLayout(null);
                notatnik.setVisible(true);
            }
            else if(czcionka.equals("Helvetica")) {
                notatnik.setFont(new Font("Helvetica", 1, notatnik.getFont().getSize()));
                notatnik.setLayout(null);
                notatnik.setVisible(true);
            }
        }
       else if(a==iInormacje)
        {
            JOptionPane.showMessageDialog(this,"Notatnik własności Hlawacza i Czajkowicza es",
                    "Autorzy",JOptionPane.INFORMATION_MESSAGE);
        }
       else if (a==iOtworz)
        {
            otworz();
        }
       else if (a==iNowy)
        {
            int odp= JOptionPane.showConfirmDialog(null, "Czy na pewno wyjsc", "Pytanie", JOptionPane.YES_NO_OPTION);
            if(odp == JOptionPane.YES_OPTION)
                notatnik.setText("");

        }
    }

    class ZmienWielkosc extends AbstractAction{
        public ZmienWielkosc(){
            putValue(Action.NAME, "Zmien");
        }
        @Override
        public void actionPerformed(ActionEvent e){
            try{
                String val;
                val = rCzcionka.getText();
                int n = Integer.parseInt(val);
                Font font1 = new Font(null, 1, n);
                notatnik.setFont(font1);
            }
            catch(Exception ex) {
                JOptionPane.showMessageDialog(getFrame(), "Wprowadzono niepoprawną wartość");
            }
        }
    }

    class WindowClosingAdapter extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent e) {
            int odp= JOptionPane.showConfirmDialog(null, "Czy na pewno wyjsc", "Pytanie", JOptionPane.YES_NO_OPTION);
            if(odp == JOptionPane.YES_OPTION) {
                System.exit(0);
            }
        }
    }

    class CloseAction extends AbstractAction {
        public CloseAction() {
            putValue(Action.NAME, "Zamknij");
            putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl Z"));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            NoteFrame kf = getFrame();
            kf.dispatchEvent(new WindowEvent(kf, WindowEvent.WINDOW_CLOSING));
        }
    }


    private NoteFrame getFrame() {
        return this;
    }

    private void zapisz() {
        JFileChooser fc = new JFileChooser();
        if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
            File plik = fc.getSelectedFile();
            try {
                PrintWriter pw = new PrintWriter(plik);
                Scanner skaner = new Scanner(notatnik.getText());
                while (skaner.hasNext()) {
                    pw.println(skaner.nextLine() + "\n");
                }
                pw.close();
                skaner.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
    private void otworz() {
        JFileChooser fc = new JFileChooser();
        if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File plik = fc.getSelectedFile();
            try {
                Scanner scanner = new Scanner(plik);
                while (scanner.hasNext())
                    notatnik.append(scanner.nextLine() + "\n");
                scanner.close();
            } catch (FileNotFoundException e) {

                e.printStackTrace();
            }
        }
    }
}

 

komentarz zamknięcia: najlepsza

1 odpowiedź

+1 głos
odpowiedź 15 maja 2021 przez VBService Ekspert (252,780 p.)
wybrane 16 maja 2021 przez krukWiesio
 
Najlepsza

how to stop the closing window

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

 

 

if(odp == JOptionPane.YES_OPTION) {
    System.exit(0);
}

if(odp == JOptionPane.NO_OPTION) {
    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}

if(odp == JOptionPane.CANCEL_OPTION) {
   frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}

 

komentarz 15 maja 2021 przez Wiciorny Ekspert (269,710 p.)
uniknąłbym tutaj porównywania referencji w ten sposób. jeszcze warto to dodać i obsłużyć to inaczej niz "=="

Podobne pytania

0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 25 stycznia 2018 w Java przez Programistka2017 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 918 wizyt
pytanie zadane 23 października 2016 w Java przez pawelgp Początkujący (350 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...