簡體   English   中英

如何從 java 中的 JSON 文件加載保存的項目

[英]How to load saved item from JSON file in java

我正在制作一個應用程序,用戶可以根據自己的方便更改theme (dark and light mood) 並且用戶選擇的theme將被保存,並且稍后再次打開應用程序時保存的theme將在那里。

我已使用JSON將數據保存到文件中。 並且當用戶點擊theme更改按鈕時,數據將被寫入file

主題代碼:

private void darkTheme() {
    FlatDarkLaf.setup(); 
    UIManager.put("TextField.foreground", new ColorUIResource(Color.WHITE));
    UIManager.put("Label.foreground", new ColorUIResource(Color.WHITE));
    UIManager.put("Button.foreground", new ColorUIResource(Color.WHITE));               
    SwingUtilities.updateComponentTreeUI(contentPane);
    for(int i=0; i<arList.size(); i++) {
        ((JLabel)arList.get(i).getRenderer()).setHorizontalAlignment(SwingConstants.CENTER);
    }
}

主題代碼更改並寫入文件按鈕:

btnDark.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String path = "resources/config.cfg";
            JSONObject json = new JSONObject();
            try {
                json.put("Theme", "darkTheme();");
            } catch (JSONException ex) {
                ex.printStackTrace();
            }
     
            try (PrintWriter out = new PrintWriter(new FileWriter(path))) {
                out.write(json.toString());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            darkTheme();
        }
    });

我可以讀取文件但無法Load保存數據。 這里是讀取文件的代碼:

private void readData() {
    try {
    String path = "resources/config.cfg";
        InputStream is = Button.class.getResourceAsStream(path);
        if (is == null) {
            throw new NullPointerException("Cannot find resource file " + path);
        }
        JSONTokener tokener = new JSONTokener(is);
        JSONObject object = new JSONObject(tokener);
       // object.getString("darkTheme();");
        object.getJSONObject("Theme");
    }
    catch (Exception e) {
        
    }
}

誰能幫助我如何正確地做到這一點。

好的,我自己和某人的想法終於有了解決方案。 我已經更改了btnDark中的行

json.put("Theme", "darkTheme();");

json.put("Theme", "Dark");

readData()方法中我這樣寫

private void readData() {
    String jsonText;
    
    try {
        String path = "resources/config.cfg";
        jsonText = IOUtils.toString(new FileInputStream(new File(path)));
        int i = jsonText.indexOf("{");
        jsonText = jsonText.substring(i);
        JSONObject ob = new JSONObject(jsonText);
        String Theme = ob.getString("Theme");
        if(Theme.equals("Dark")) {
            darkTheme();
        }
        else if(Theme.equals("Light")) {
            lightTheme();
        }
        
    }catch(Exception ex) {
        ex.printStackTrace();
    }
}

現在它完美地工作了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM