我遇到了一个我无法解决的简单问题。 我有两个类(Fruits.java with main和FruitDetails.java)。
Fruits.java是一个小程序,有很多东西,真的。它有一个ComboBox,我需要将其当前选择的选项转移到FruitDetails。
问题是......我对制定者和吸气剂的理解似乎非常有缺陷。我在过去的2个小时里在网上对它进行了研究,这是我能得到的最接近的东西。我的时间非常紧,我现在无法帮你问你......
内部Fruits.java
public void selectedFruit() {
currentFruit = (String) fruitList.getSelectedItem();
}
public String getSelectedFruit() {
return currentFruit;
}
内部类FruitDetails.java
public void fruitChoice() {
Fruits fruitChoice = new Fruits();
String chosenFruit = fruitChoice.getSelectedFruit();
System.out.println(chosenFruit);
// Rest of the code
}
不仅这会打开我程序的另一个副本(我真的不想要),系统打印出来" null"为了结果。
我真的需要让这个工作,希望它能帮助我解决一下我对封装的理解。我已经找到了大量的在线资源,但使用它们似乎对我的头脑来说太难了。
提前感谢您的帮助。
答案 0 :(得分:2)
public void fruitChoice() {
Fruits fruitChoice = new Fruits();
String chosenFruit = fruitChoice.getSelectedFruit();
System.out.println(chosenFruit);
// Rest of the code
}
在第二行中,您创建了一个新对象,当您尝试获取currentFruit的值时,为什么会出现null。
答案 1 :(得分:0)
看起来你的方法selectedFruit()设置了currentFruit但你实际上没有调用selectedFruit()?
除非你遗漏了一些在其他地方调用selectedFruit()的代码?
在实例化Fruit对象后尝试调用selectedFruit()。
答案 2 :(得分:0)
这是因为您实际上没有将currentFruit
链接到组合框。您需要做两件事 - 在第一次填充组合框时调用selectedFruit
,然后在每次组合框选择更改时附加一个调用selectedFruit
的侦听器。
如果您使用的是JComboBox,请在创建JComboBox后插入此代码。
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
selectedFruit();
}
})
selectedFruit();