Java “使”按钮仅在变量达到某个值时可见,并且不起作用

Java “使”按钮仅在变量达到某个值时可见,并且不起作用,java,swing,jbutton,Java,Swing,Jbutton,我正在尝试制作一款类似饼干的“游戏”,而我目前的障碍是,只有当你有足够的黄金时,才能看到一个按钮。 这是我所有的代码:(没有开始类) 当玩家点击50“klicks”时,使按钮可见 但是这样做的话,按钮就永远看不见了,就好像它根本不在那里一样 伙计们,我能在这里做什么? 非常感谢您的帮助只要在达到条件时添加组件即可。添加到可见框架的任何组件都是可见的(该特性控制所有层次结构) 首先,不要将其添加到UI,所以请删除行,这样组件将不可见: this.add(upgrade1); 修改可能增加黄金的任

我正在尝试制作一款类似饼干的“游戏”,而我目前的障碍是,只有当你有足够的黄金时,才能看到一个按钮。 这是我所有的代码:(没有开始类)

当玩家点击50“klicks”时,使按钮可见 但是这样做的话,按钮就永远看不见了,就好像它根本不在那里一样

伙计们,我能在这里做什么?
非常感谢您的帮助

只要在达到条件时添加组件即可。添加到可见框架的任何组件都是可见的(该特性控制所有层次结构)

首先,不要将其添加到UI,所以请删除行,这样组件将不可见:

this.add(upgrade1);
修改可能增加黄金的任何按钮的回调,例如:

klick.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae){
       klicks += k;
       test.setText("Gold:" + " " + klicks);
       if (klicks >= 10) {
         GUI.this.add(upgrade1);
       }
     }
   });
在开始添加每个组件之前,请小心不要使框架可见,因此请删除构造函数开头对this.setVisible(true)的第一个调用


另一种方法是让组件可见,但在需要时使其启用/禁用。

只要在达到条件时添加组件即可。添加到可见框架的任何组件都是可见的(该特性控制所有层次结构)

首先,不要将其添加到UI,所以请删除行,这样组件将不可见:

this.add(upgrade1);
修改可能增加黄金的任何按钮的回调,例如:

klick.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae){
       klicks += k;
       test.setText("Gold:" + " " + klicks);
       if (klicks >= 10) {
         GUI.this.add(upgrade1);
       }
     }
   });
在开始添加每个组件之前,请小心不要使框架可见,因此请删除构造函数开头对this.setVisible(true)的第一个调用


另一种方法是让组件可见,但在需要时使其启用/禁用。

您的代码工作正常。问题在于,您将可见条件放在了错误的操作事件中

upgrade1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae)
    {
        if (klicks >= 50)
        {
            upgrade1.setVisible(true);
        }

        klicks -= pickaxekosten;
        test.setText("Gold:" + " " + klicks);
        k += 1;
        pickaxekosten = pickaxekosten+4;
    }
});
问题:
1.您已经显示了要在单击次数后显示的按钮。它应该是假的。
2.您已经在上面的代码中发布的“upgrade1”上添加了actionlistener,并且您正在同一个操作块中设置“upgrade1”按钮的可见性。这将不可能,因为按钮在屏幕上的第一个位置不可见。无按钮无点击事件。

3.将“upgrade1”按钮的可见性条件置于“miner1”或“klick”按钮操作事件上。:-)

您的代码运行正常。问题在于,您将可见条件放在了错误的操作事件中

upgrade1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae)
    {
        if (klicks >= 50)
        {
            upgrade1.setVisible(true);
        }

        klicks -= pickaxekosten;
        test.setText("Gold:" + " " + klicks);
        k += 1;
        pickaxekosten = pickaxekosten+4;
    }
});
问题:
1.您已经显示了要在单击次数后显示的按钮。它应该是假的。
2.您已经在上面的代码中发布的“upgrade1”上添加了actionlistener,并且您正在同一个操作块中设置“upgrade1”按钮的可见性。这将不可能,因为按钮在屏幕上的第一个位置不可见。无按钮无点击事件。

3.将“upgrade1”按钮的可见性条件置于“miner1”或“klick”按钮操作事件上。:-)

非常感谢你的回答!这真的帮了我很大的忙!非常感谢你的回答!这真的帮了我很大的忙!感谢您花时间给出这个完美的答案!总是很荣幸。:-)感谢您花时间给出这个完美的答案!总是很荣幸。:-)