0

JFrame「GameWindow」と「Combat」という名前のクラスがあります。

Combat クラスの変数から GameWindow のさまざまなコンポーネント (JLabels、JProgressBars など) を更新しようとしています。ただし、詳細は更新されないようです。次の点を考慮してください。

public class Combat {
public static String attackName1;
public static String pUnitName;

public static void setPlayerUnit(GameUnit u) {

    attackName1 = u.getAttackName1();
    pUnitName = u.getName().toUpperCase();
    }
}

と:

 public GameWindow() {

    initialize();
    gameFrame.setVisible(true);
}

 private void initialize() {        
    gameFrame = new JFrame();
    gameFrame.setResizable(false);
    gameFrame.setTitle("GameWindow");
    gameFrame.setBounds(100, 100, 800, 480);
    gameFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

 JButton pAttack1 = new JButton(Combat.attackName1);  //<--------NOT BEING CHANGED
    sl_gamePanel.putConstraint(SpringLayout.NORTH, pAttack1, 0, SpringLayout.NORTH, gameTextPanel);
    sl_gamePanel.putConstraint(SpringLayout.WEST, pAttack1, 6, SpringLayout.EAST, textAttackSeparator);
    sl_gamePanel.putConstraint(SpringLayout.SOUTH, pAttack1, 34, SpringLayout.NORTH, gameTextPanel);
    sl_gamePanel.putConstraint(SpringLayout.EAST, pAttack1, 157, SpringLayout.EAST, textAttackSeparator);
    gamePanel.add(pAttack1);

 JLabel pMobName = new JLabel(Combat.pUnitName); //<--------NOT BEING CHANGED
    sl_pPanel.putConstraint(SpringLayout.NORTH, pMobName, 10, SpringLayout.NORTH, pPanel);
    sl_pPanel.putConstraint(SpringLayout.WEST, pMobName, 129, SpringLayout.WEST, pPanel);
    pPanel.add(pMobName);

ボタン/JLabels のテキストが更新されないのはなぜですか? 「Combat.variable」を「Combat.getVariable()」に変更する必要がありますか? これは可能ですか?もしそうなら、どうすればそれを機能させることができますか?

4

1 に答える 1

2

あなたは次のように述べています:

JButton pAttack1 = new JButton(Combat.attackName1); 前述のとおり、戦闘クラスの変数を変更しても、JButton のテキストは更新されません。

参照変数とそれが表すオブジェクトを混同しており、それらが異なることを理解する必要があります。最初に Combat.attackName1 と JButton の名前は同じ String オブジェクトを参照しますが、String は不変です。変数が参照している String オブジェクトを変更しても、JButton によって表示される String には影響しません。setText(...)解決策:表示されるテキストを変更する場合は、JButton のメソッドを呼び出します。

于 2013-05-15T02:52:21.173 に答える