Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

關於java 視窗 變數疑問

各位大大 我想請問 我有宣告一個 int a=0;

我視窗打開 本來 a=0 我按下button a會變成1

要如何寫才可以我下次打開 視窗 a要是1 不是打開 又是0

該怎們永久從外部更改這個變數呢?

已更新項目:

不好意思再請問一下 你這行路徑

String fileName = "data.txt";

沒有設定路徑 他會儲存在 jar的路徑底下?是這樣嗎?

1 個解答

評分
  • John
    Lv 7
    7 年前
    最佳解答

    import java.io.*;

    import javax.swing.*;

    import java.awt.*;

    import java.awt.event.*;

    public class Program extends JFrame {

    private static final long serialVersionUID = 1L;

    private int a = 0;

    private JLabel lblResult;

    private JButton btnProceed;

    public static void main(String[] args) {

    new Program();

    }

    public Program() {

    a = AppService.load();

    JPanel pane = new JPanel();

    btnProceed = new JButton("Proceed");

    btnProceed.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent ae) {

    a++;

    lblResultRefresh();

    AppService.save(a);

    }

    });

    pane.add(btnProceed);

    lblResult = new JLabel("");

    lblResultRefresh();

    pane.add(lblResult);

    getContentPane().add(pane);

    setSize(300, 300);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setVisible(true);

    }

    private final void lblResultRefresh() {

    lblResult.setText(String.format("a=%d", a));

    }

    }

    final class AppService {

    private static final String fileName = "data.txt";

    public static void save(int a) {

    try {

    File file = new File(getAbsolutePath());

    if (!file.exists()) file.createNewFile();

    FileWriter fw = new FileWriter(file);

    BufferedWriter bw = new BufferedWriter(fw);

    bw.write(String.valueOf(a));

    bw.flush();

    bw.close();

    } catch (IOException ignore) {

    }

    }

    public static int load() {

    int result = 0;

    try {

    FileReader fr = new FileReader(new File(getAbsolutePath()));

    BufferedReader br = new BufferedReader(fr);

    result = Integer.parseInt(br.readLine());

    br.close();

    } catch (IOException | NumberFormatException ignore) {

    }

    return result;

    }

    private static String getAbsolutePath() {

    return new File(fileName).getAbsolutePath();

    }

    }

還有問題?馬上發問,尋求解答。