如何更新另一个 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;
我有 class GridButtonPanel
这样的 here is 并且我在 createNavPanel
void:
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;