java - 如何从 JPanel swing 更改 JFrame 标签

标签 java swing jframe jpanel

嗨,我需要从 JPanel 更改 JFrame 上的 JLabel。我只能在鼠标移动时更改此设置,但每次得分++时我都需要更改;

private void panelKwadraty1MouseMoved(java.awt.event.MouseEvent evt)                                          
{                                              
 jLabel1.setText("Twoj wynik to: "+panelKwadraty1.getScore());
} 

我需要在以下情况进行更改:

 if (kwadrat[i].sprawdzKolizje(belka) == 1)
              {
                  kwadrat[i]=new Kwadrat(kwadrat[i].getKolor());
                  score++;
                 // Jframe.jLabel1.setText("Your score is :" + score); <--- i need do that
              }

编辑:

我解决了问题。我用过propertyChangeListener .

在 JFrame 中:

    panelKwadraty1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
        public void propertyChange(java.beans.PropertyChangeEvent evt) {
            panelKwadraty1PropertyChange(evt);
        }
    });

    private void panelKwadraty1PropertyChange(java.beans.PropertyChangeEvent evt)
    {
        if(evt.getPropertyName().equals(PanelKwadraty.ZMIANA_WYNIKU)){
            setLabelText(""+evt.getNewValue());
        }
    }

在 JPanel 中:

  int old_score = score;
  score++;
  this.firePropertyChange(ZMIANA_WYNIKU, old_score, score);

最佳答案

根据您提供的代码,我假设 jLabel1 是公共(public)的,因为您在面板的方法中调用它。

因此,我认为您的问题可能是当您移动鼠标时会发生很多变化,并且标签没有足够快地重新绘制。为了确保其重绘尽快发生,请使用以下代码:

    private void setLabelText(String text)
    {
        jLabel1.setText(text);
        jLabel1.paintImmediately(jLabel1.getVisibleRect());
    }

希望就是这样。

关于java - 如何从 JPanel swing 更改 JFrame 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848878/

相关文章:

java - 绘制我的几何特征集合?

java - 如何将 2 个 Jlabel 对象放入 JFrame 中?

java - 在任意位置放置形状

java - 通过Java 8中的真实代码详解Hashmap的大O - put()方法

java - JButtons 在被禁用后重新启用

java - 需要帮助在火柴人游戏中切换到图片

java - 使用数组/循环设置 JLabel 的文本

java - JLabel 未显示在 JFrame 中

java - 如何在 Spring REST Controller 中验证请求参数

java - “折扣”功能无法正常工作