如何根据GUI中的用户输入更改Java中的变量值?

如何根据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

我目前正在为一个农场设计GUI。农场由杂草、豆类植物和农民三个角色组成。运行农场GUI后,它显示农民种植和清除农田杂草的动作。我已经定义了演员的概率,以确保该领域不会人口过剩

以下内容在模拟器类中声明。概率如下:

    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中的用户输入分配给常量。