[英]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.