我正在用Java实现一个简单的应用程序。我正在使用应用程序的MVC模块。问题是,当我的Controller
创建了View
和Model
的对象时,尝试使用简单的get方法时,我得到了默认值,而不是新插入的UI,下面是一个代码〔实施例:ActionListener get的默认值
查看:
public class Client extends JFrame {
private float ammount;
private JButton calculateButton;
...
public void startUI(ActionListener listener) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Client frame = new Client(listener);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
...
public Client(ActionListener listener) {
...
ammount = 10;
...
calculateButton = new JButton("Calculate");
calculateButton.addActionListener(listener);
add(calculateButton);
...
public float getAmmount() {
return (float) this.ammount;
}
控制器:
public class Controller implements ActionListener {
private float result;
private Server server = new Server();
private Client client = new Client(this);
public Controller() {
server.rateParser();
client.startUI(this);
}
public void actionPerformed(ActionEvent e) {
result = client.getAmmount();
}
}
主营:
public class Program {
// Main function
public static void main(String[] args) {
Controller controller = new Controller();
}
}
到目前为止好,但是,当我按一下按钮,动作事件触发器 getAmmount
方法返回-1,这是默认值值。 Client
课程中的所有获得者都一样。有没有人知道为什么会发生这种情况?
考虑提供一个[可运行示例](https://stackoverflow.com/help/mcve),它演示了您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将导致更少的混淆和更好的响应 – MadProgrammer
您正在使用'Client(CurrencyParser,ActionListener)'构造函数实例化Client实例,但是您的代码片段显示了'Client(ActionListener)'构造函数。这可能是原因吗? –
对不起,忘了删除那段代码。现在修复。 – user3134453