如何根据GUI中的用户输入更改Java中的变量值?
我目前正在为一个农场设计GUI。农场由杂草、豆类植物和农民三个角色组成。运行农场GUI后,它显示农民种植和清除农田杂草的动作。我已经定义了演员的概率,以确保该领域不会人口过剩 以下内容在模拟器类中声明。概率如下:如何根据GUI中的用户输入更改Java中的变量值?,java,swing,user-interface,Java,Swing,User Interface,我目前正在为一个农场设计GUI。农场由杂草、豆类植物和农民三个角色组成。运行农场GUI后,它显示农民种植和清除农田杂草的动作。我已经定义了演员的概率,以确保该领域不会人口过剩 以下内容在模拟器类中声明。概率如下: public final double FARMER_CREATION_PROB = 0.01; public final double BEANPLANT_CREATION_PROB = 0.01; public final double WEED_CREAT
public final double FARMER_CREATION_PROB = 0.01;
public final double BEANPLANT_CREATION_PROB = 0.01;
public final double WEED_CREATION_PROB = 0.01;
我现在正在设计一个独立的GUI,它允许根据用户输入的内容更改上述变量和更多变量。例如,我有一个JTextField来表示杂草产生的概率,如果用户输入3,那么我需要FARMER_creation_PROB=3
以下是我为FarmGUI类中声明的三种概率创建JTextFields的方法:
weedField = new JTextField ();
beanField = new JTextField ();
farmerField = new JTextField();
在对Java了解有限的情况下,我尝试了以下方法:
public final double WEED_CREATION_PROB = weedField.getText();
但是,它声明找不到符号。我很确定我的方法无论如何都不是正确的方法
问题:
如何从GUI获取用户输入,并确保它将创建概率更改为用户输入的概率
编辑:
首先,感谢您的反馈
这是我设计的非常基本的GUI
[IMG]
GUI的逻辑:GUI的全部目的是使用户能够为每个字段设置值。在上面的GUI中单击Run Simulation(运行模拟)后,运行模拟的另一个GUI将显示在单独的框架上
编辑2:
我根据@zaibi099的建议尝试了以下内容,只是想知道它是否正确
在模拟器类中:
public final double WEED_CREATION_PROB;
在场GUI类中:
run.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
double s = Double.parseDouble(weedField.getText());
你正在犯的错误: 这两种类型都不兼容。weedField.getText;返回字符串并将其分配给double 您正在尝试将值赋给finalconstant变量,因此它不允许您这样做。可以第一次将常量赋给值。 解决方案: 公共最终双农民创造问题 在您要分配的位置执行此操作:
FARMER_CREATION_PROB = weedField.getText(); // don't forget to convert the text field into double
也许通过使用监听器……在我对Java理解有限的情况下,我尝试了以下方法:给我们围绕这条语句的代码。我觉得这是在错误的位置声明的,或者一般来说是不正确的。事实上,如果您通过GUI分配它们,您可能不应该使它们成为最终的两倍。你应该通过一个按钮列表器来分配它们。@Compass给出点提示是没有建设性的,因为整个方法似乎都是错误的。修复一些不好的地方只会增加混乱。列举一些做错的事情,每一件都需要修复:阴影而不是赋值,尝试赋值到final,尝试将字符串赋值到double,允许数字字段中的自由格式文本,没有上下文赋值。我们需要的是正如您所说的代码上下文,这样我们就可以纠正方法或指向正确问题的方向,而不是逐个修复上述错误。编辑问题并解释:a GUI的逻辑。字段是否显示在同一帧中?不同的框架?同时当按下按钮时?b定义GUI字段的位置与定义FARMER_CREATION_PROBE和其他常量的位置。我现在可以说一件事:从GUI获取最终字段的值可能不是您想要的。欢迎使用堆栈溢出!请确保在以后的帖子中使用正确的格式。Hi@zaibi099。首先,谢谢你的回答,不过我试过你的建议,但没有用。我已经说过:“公共最终静态双FARMER\u CREATION\u PROB=farmerField.getText;”然而,farmerField出现了一个错误,说明找不到符号。我已经成功地从每个JTextField获得了每个字符串,并将它们转换为double或int变量,但是,现在我只知道如何将JTextField中的用户输入分配给常量。