我有GridButtonPanel
这样的here is类,我在createNavPanel
中有一个像这样的JLabel 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);
我还有一个班级,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;
}
}
但在这种情况下,这不起作用。我怎么能这样做?
答案 0 :(得分:1)
这不是创建新JLabel
并将其添加到旧版本的解决方案。直接更改,像这样:
gpanel.cpLabel.setText("Some label text");
和不喜欢这样:
JLabel l = new JLabel();
l.setText("Some label text");
gpanel.cpLabel = l;