@myrkonianin

Не сохраняется переменная boolean?

Решил попрактиковатся, написать блокнотик. кароч историю рассказывать не буду, ибо это никому не интересно.
В чем суть: в классе Page не меняется переменная boolean. в первый раз такое встречаю... Помогите!

класс Page: (в котором ошибка)
import javax.swing.*;
import java.io.*;
public class Page{
  boolean isSaved;
  private String path = "";
  private File file;
  
  public Page(){
    isSaved = false ;
  }
  
  public void saveFile(JTabbedPane tabs){
       
    if(!isSaved){
      isSaved = true;
      JFileChooser fc = new JFileChooser();
      fc.showSaveDialog(null);
      file = fc.getSelectedFile();
      path = file.getAbsolutePath();
      Scroll s = (Scroll)tabs.getSelectedComponent();
      try{
        FileWriter fw = new FileWriter(file);
        fw.write(s.getText()); 
        fw.close();
      }catch(IOException ex){ex.printStackTrace();}
      isSaved = true;
      
    }else{
      Scroll s = (Scroll)tabs.getSelectedComponent();
      try{
        FileWriter fw = new FileWriter(file);
        fw.write(s.getText()); 
        fw.close();
      }catch(IOException ex){ex.printStackTrace();}
    }
  }
  
  public void clearSavePath(){
    isSaved = false;
    path = "";
  }
}


класс gui:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.nio.file.*;
class gui{
  private final JTabbedPane tabs;
  public JFrame win;
  public gui(){
   win = new JFrame("jmpad");
   win.setSize(800,600);
   win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   win.setLayout(new BorderLayout());
   
   JMenuBar menu = new JMenuBar();
   JMenu file = new JMenu("File...");
   JMenu tabsSettings = new JMenu("Tabs...");
   JMenuItem open = new JMenuItem("Open file...");
   JMenuItem save = new JMenuItem("Save file...");
   JMenuItem closeTab = new JMenuItem("Close tab");
   JMenuItem newTab = new JMenuItem("New tab");
   tabs = new JTabbedPane();
   
   file.add(open);
   file.add(save);
   tabsSettings.add(newTab);
   tabsSettings.add(closeTab);
   menu.add(file);
   menu.add(tabsSettings);
   win.setJMenuBar(menu);
   //menu events
   newTab.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent ae){
      JTextArea text = new JTextArea();
      Scroll scrl = new Scroll(text);
      tabs.addTab("new tab",scrl);
     }
   });
   
   open.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent ae){
      JFileChooser fc = new JFileChooser();
      fc.showOpenDialog(null);
      File file = fc.getSelectedFile();
      try{
        String input = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())));
        JTextArea text = new JTextArea(input);
        Scroll scrl = new Scroll(text);
        tabs.addTab(file.getName(),scrl);
      }catch(IOException ex){ex.printStackTrace();}
     }
   });
   
   save.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent ae){
       Page page = new Page();
       page.saveFile(tabs);
     }
   });
   //
   
   newTab();
   
   win.add(tabs);
  }
  
  public void newTab(){
    JTextArea text = new JTextArea();
    Scroll scrl = new Scroll(text);
    tabs.addTab("new tab",scrl);
  }
}


ну класс-запускатор приводить не буду.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@Iloveski
Может туплю, но по моему проблема в том, что на каждое нажатие кнопки создается новый объект Page
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект