将String传递给另一个类

时间:2018-03-30 08:14:39

标签: java string transfer

我遇到了一个我无法解决的简单问题。 我有两个类(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"为了结果。

我真的需要让这个工作,希望它能帮助我解决一下我对封装的理解。我已经找到了大量的在线资源,但使用它们似乎对我的头脑来说太难了。

提前感谢您的帮助。

3 个答案:

答案 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();