如何更新另一个 class 中的 JLabel

How to update a JLabel which is in an other class

我有 class GridButtonPanel 这样的 here is 并且我在 createNavPanel void:

中有这样的 JLabel
public JPanel box;         
public JLabel cpLabel; 


n = new JPanel(new BorderLayout());
box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
cpLabel = gui.currentPlayerLabel(game.currentPlayer);
box.add(cpLabel);
n.add(box, BorderLayout.WEST);

当然我这里还有一些其他的东西... gui.currentPlayer 是这样的:

JLabel currentPlayerLabel(int cp) {
    JLabel l = new JLabel();
    switch(cp){
        case 1 : l.setText("Current Player: Player 1");
                 l.setForeground(Color.green);
                 break;
        case 2 : l.setText("Current Player: Player 2");
                 l.setForeground(Color.blue);
                 break;
    }
    return l;
}

然后我将所有内容添加到主 JFrame,如下所示: f.add(createNavPanel(), BorderLayout.NORTH);

我还有一个class,gui。在这里我做了一些工作,我想更新 cpLabel。我试过这样:

    private void changePlayerLabel(){
    int cp = game.currentPlayer;
    switch(cp){
        case 1 : 
                 gpanel.cpLabel.setText("Current Player: Player 1");
                 gpanel.cpLabel.setForeground(Color.green);
                 break;
        case 2 : gpanel.cpLabel.setText("Current Player: Player 2");
                 gpanel.cpLabel.setForeground(Color.blue);
                 break;
    }
}

但这在这种情况下不起作用。我该怎么做?

这里没有创建新的 JLabel 并将其添加到旧的解决方案。直接改,这样:

gpanel.cpLabel.setText("Some label text");

不是这样的:

 JLabel l = new JLabel();
 l.setText("Some label text");
 gpanel.cpLabel = l;