【问题标题】:GUI won't refreshGUI 不会刷新
【发布时间】:2012-01-17 19:25:14
【问题描述】:

我正在为我的考试开发一个基于文本的简单角色扮演游戏,但我的 gui 遇到了一些问题。

玩家注册时,可以消耗3个类别的一些属性点。如果玩家有任何属性点,则 GUI 会显示“提高力量”等按钮。

这很酷,但是当玩家点击加注按钮时,会为他获取一个属性点,问题是,gui 似乎没有更新。

if(Controller.player.getAttributePoints() > 0) {
        JLabel attriL = new JLabel("You have " + Controller.player.getAttributePoints() + " unspent Attribute points."); 
        attriL.setBounds(110, 30, 250, 30);
        hPanel.add(attriL);

        JButton setStrB = new JButton("Raise Strength");
        setStrB.setBounds(125, 60, 200, 30);
        setStrB.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
             //   tabbedPane.removeAll();                    
                Controller.player.setAttributePoints(Controller.player.getAttributePoints()-1);
                Controller.player.setStrength(Controller.player.getStrength()+1);

                gameCtn.validate();
                gameCtn.repaint();
                System.out.println(Controller.player.getStrength());                    
            }
        });
        hPanel.add(setStrB);
}

如您所见,我尝试在容器上使用重绘和验证,但没有运气,我也尝试过框架和面板,但似乎没有任何效果? 我是不是做错了什么?

谢谢

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    不清楚 Controller... 是否没有调用长时间的硬任务,基本上(如果你删除然后添加新的 JComponents)到 GUI 那么你必须调用

    revalidate();
    repaint();// not required on all cases
    

    简单的演示what's happens, what's possible 或最完整的here

    【讨论】:

      【解决方案2】:

      对此感到抱歉。

      您没有让按钮不可见的代码。

      public void actionPerformed(ActionEvent evt) {
          ...
          if (whateverIsLeft < 1) {
              JButton src = (JButton)evt.getSource();
              src.setVisible(false);
          }
      
          attriL.setText("You have " + whateverIsLeft + " attribute points left");
      }
      

      【讨论】:

      • 嘿黑熊猫,没问题的是,当 Controller.player.getAttributePoints() 小于 1 时按钮应该消失,但没有任何反应。
      • 谢谢熊猫,我想我明白你的意思了。 :)
      猜你喜欢
      • 2012-03-09
      • 2018-09-18
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2019-11-30
      • 2017-10-02
      相关资源
      最近更新 更多