gpt4 book ai didi

java - 如何从 JPanel swing 更改 JFrame jlabel

转载 作者:行者123 更新时间:2023-12-04 06:27:39 25 4
gpt4 key购买 nike

嗨,我需要从 JPanel 更改 JFrame 上的 JLabel。我只能在鼠标移动时更改此设置,但每次 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
}

编辑:

我解决了问题。我用了 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 jlabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com