【发布时间】:2015-05-18 05:02:32
【问题描述】:
我正在用 Java 实现一个简单的应用程序。我正在为应用程序使用 MVC 模块。问题是,当我的Controller 创建View 和Model 的对象时,当尝试使用简单的get 方法时,我得到的是默认值,而不是我插入到UI 中的新值。这是一个代码示例:
查看:
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 类中的所有吸气剂也是如此。有谁知道为什么会这样?
【问题讨论】:
-
考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将减少混乱并获得更好的响应
-
您正在使用
Client(CurrencyParser, ActionListener)构造函数实例化客户端实例,但您的代码 sn-p 显示了Client(ActionListener)构造函数。这可能是原因吗? -
抱歉,忘记删除那段代码了。现已修复。
-
更正标题。
标签: java swing model-view-controller initialization