Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从JPanel swing更改JFrame标签_Java_Swing_Jframe_Jpanel - Fatal编程技术网

Java 如何从JPanel swing更改JFrame标签

Java 如何从JPanel swing更改JFrame标签,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,嗨,我需要更改JFrame上的JLabel,来自JPanel。我只能在鼠标移动时更改此设置,但每次当score++时我都需要更改 private void panelKwadraty1MouseMoved(java.awt.event.MouseEvent evt) { jLabel1.setText("Twoj wyn

嗨,我需要更改JFrame上的JLabel,来自JPanel。我只能在鼠标移动时更改此设置,但每次当score++时我都需要更改

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
              }
在JPanel中:

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

在JFrame中公开
jLabel1
,以便JPanel可以访问它。如果JFrame和JPanel都属于同一个类,那么只需将
jLabel1
设置为全局,JPanel就可以访问它。

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

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

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

希望是这样。

控件是否进入if()??如果它们位于同一窗口中,则不必将其引用为JFrame.JLabel。。您只需公开JLabel并调用该方法
jLabel1.setText()
simple。。您能告诉我们更多有关组件放置位置的信息吗?

这是jFrame中的一个公共字段jLabel1?好的,但如何访问它?我没有JFrame变量@mientus:两个[jFrame,jPanel]在同一个班级吗?@mientus:看起来两个都在不同的班级。在这种情况下,通过将
jLabel1
声明为public或使其具有getter方法,使其公开可用。然后在jPanel所在的类中,您必须创建一个包含jFrame的类的实例,然后执行您的工作。jFrame和jPanel不是同一个类。@meintus:然后看看我在您之前发布的注释。@mientus我有一些代码,我将编辑到当前的答案中,这将显示您只需获取标签即可。目前我已过期了当天的最大编辑数;D
    private void setLabelText(String text)
    {
        jLabel1.setText(text);
        jLabel1.paintImmediately(jLabel1.getVisibleRect());
    }