簡體   English   中英

通過getter / setter將數據傳遞給其他類

[英]Passing data to other classes via getter/setter

我在將數據從GUI傳遞到其他類時遇到問題。 一切都在GUI中初始化,然后從那里將數據傳遞到另一個類,在該類中可能進行其他更改:(用於編譯的簡化部分和缺失部分)

class GUI extends JFrame {
final Configuration conf = new Configuration();

GUI() {
    initComponents();
}

private void initComponents() {

    //Setup default values
    conf.expectFires(false);
    conf.expectRain(false);
    conf.expectDisaster(true);

    JComboBox<String> seasonTypes = new JComboBox<>(new String[]{"Winter", "Spring", "Summer", "Fall"});

    seasonTypes.setSelectedIndex(0);
    conf.setSeason(seasonTypes.getItemAt(seasonTypes.getSelectedIndex()));

    //Action listener for dynamic changes to whatever is selected
    seasonTypes.addActionListener(e -> {
        String season = seasonTypes.getSelectedItem().toString();
        if (!season.equals(""))
            conf.setSeason(season);
    });

    pack();
    setLocationRelativeTo(getOwner());
    setVisible(true);
}
}

數據應該保存到我的配置類(getter / setter類)中。 我無法檢索任何數據,除非我在同一類中進行了設置:

主班:

public class Main {

public static void main(String[] args) {
    Configuration conf = new Configuration();

    //code for GUI not included but pretend the GUI is called here

    //data does not come out it's basically unset.
    System.out.println("Data from GUI: [season]"+ conf.getSeason()+ " Season expectations: " + conf.expectations());

    //yet this works just fine. 
    conf.setSeason("Summer");
    System.out.println("What's the last season set?: " + conf.getSeason()); 
}
}

看起來您正在創建Configuration類的兩個實例。 一個在GUI ,一個在您的Main類中。 這些不是共享的。

如果要從GUI使用Configuration ,請嘗試在GUI類中為Configuration添加吸氣劑

public Configutation getConfig()
{
     return conf;
}

然后在您的主要嘗試中:

public class Main {

    public static void main(String[] args) {
    //code for GUI not included but pretend the GUI is called here
    // Assuming something like:
    GUI gui = new GUI();

    Configuration conf = gui.getConfig();

    System.out.println("Data from GUI: [season]"+ conf.getSeason()+ " Season expectations: " + conf.expectations());
    }
}

另一種選擇是將Configuration創建為單例-然后您獲得相同的實例,而不是每次實例化一個新實例。 這是如何執行此操作的示例

暫無
暫無

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

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