単一のパネル「モールド」から動的に作成されている4つのパネルがあります。各パネルには、配列から設定されているパネルに関するさまざまな情報があります。問題は、情報が更新されると、セットの最後のパネルのみが変更されることです。
例:残りの移動数を明らかに示すMovesLeftラベルがあります。数が減ると、そのプレーヤーにリストされている数が変わるはずです。各プレーヤーは独自のパネルを持っています。現在、最後のパネルのMoveleftラベルのみが変更され、最後のプレーヤーだけでなく移動するすべてのプレーヤーに対して変更されます。したがって、プレーヤー1がすべての動きを使い果たすと、プレーヤー1のパネルではなくプレーヤー4のパネルに0が表示されます。
質問:正しいプレーヤーの情報が更新されるように、ラベルの4つのインスタンスのどれを変更するかを指定する方法はありますか?
パネルのセットアップ
protected JComponent makeTextPanel(String text) {
JPanel panel = new JPanel(false);
//panel.add(filler);
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
name = new JLabel(minirpg.MiniRPG.players.get(setupPlayerIndex).getName());
c.insets = new Insets(5, 5, 5, 5);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
panel.add(name, c);
icon = new JLabel(MiniRPG.players.get(setupPlayerIndex).getIcon());
c.gridx = 1;
c.gridy = 2;
panel.add(icon, c);
lblClass = new JLabel("Class:");
c.gridx = 1;
c.gridy = 3;
c.gridwidth = 1;
panel.add(lblClass, c);
pClass = new JLabel(MiniRPG.players.get(setupPlayerIndex).getclass());
c.gridx = 2;
c.gridy = 3;
panel.add(pClass, c);
lblRole = new JLabel("Role:");
c.gridx = 1;
c.gridy = 4;
panel.add(lblRole, c);
role = new JLabel(MiniRPG.players.get(setupPlayerIndex).getRole());
c.gridx = 2;
c.gridy = 4;
panel.add(role, c);
dash = new JLabel("--------------------STATS--------------------");
c.gridwidth = 4;
c.gridx = 1;
c.gridy = 5;
panel.add(dash, c);
lblStr = new JLabel("Strengh:");
c.gridwidth = 2;
c.gridx = 1;
c.gridy = 6;
panel.add(lblStr, c);
str = new JLabel(Integer.toString(
minirpg.MiniRPG.players.get(setupPlayerIndex).getStr()));
//c.insets = new Insets(5, 5, 5, 5);
c.gridwidth = 1;
c.gridx = 3;
c.gridy = 6;
panel.add(str, c);
lblDex = new JLabel("Dexterity:");
c.gridwidth = 2;
c.gridx = 1;
c.gridy = 7;
panel.add(lblDex, c);
dex = new JLabel(Integer.toString(
minirpg.MiniRPG.players.get(setupPlayerIndex).getDex()));
c.gridwidth = 1;
c.gridx = 3;
c.gridy = 7;
panel.add(dex, c);
lblEnd = new JLabel("Endurance:");
c.gridwidth = 2;
c.gridx = 1;
c.gridy = 8;
panel.add(lblEnd, c);
end = new JLabel(Integer.toString(
minirpg.MiniRPG.players.get(setupPlayerIndex).getEnd()));
c.gridwidth = 1;
c.gridx = 3;
c.gridy = 8;
panel.add(end, c);
lblDex = new JLabel("Wisdom:");
c.gridwidth = 2;
c.gridx = 1;
c.gridy = 9;
panel.add(lblDex, c);
wiz = new JLabel(Integer.toString(
minirpg.MiniRPG.players.get(setupPlayerIndex).getWis()));
c.gridwidth = 1;
c.gridx = 3;
c.gridy = 9;
panel.add(wiz, c);
lblHp = new JLabel("HP: ");
c.gridx = 1;
c.gridy = 10;
panel.add(lblHp, c);
health = new JLabel(Integer.toString(
minirpg.MiniRPG.players.get(setupPlayerIndex).getHp()));
c.gridx = 2;
c.gridy = 10;
panel.add(health, c);
lblMoves = new JLabel("Moves Left: ");
c.gridx = 1;
c.gridy = 11;
panel.add(lblMoves, c);
movesLeft = new JLabel(Integer.toString(
MiniRPG.players.get(setupPlayerIndex).getMoves()));
c.gridx = 2;
c.gridy = 11;
panel.add(movesLeft, c);
dash = new JLabel("--------------------SKILLS--------------------");
c.gridwidth = 4;
c.gridx = 1;
c.gridy = 12;
panel.add(dash, c);
lblSkill1 = new JLabel("Skill 1:");
c.gridwidth = 1;
c.gridx = 1;
c.gridy = 13;
panel.add(lblSkill1, c);
skill1 = new JButton(MiniRPG.players.get(setupPlayerIndex).getSkill1());
c.gridx = 2;
c.gridy = 13;
panel.add(skill1, c);
lblSkill2 = new JLabel("Skill 2:");
c.gridx = 1;
c.gridy = 14;
panel.add(lblSkill2, c);
skill2 = new JButton(MiniRPG.players.get(setupPlayerIndex).getSkill2());
c.gridx = 2;
c.gridy = 14;
panel.add(skill2, c);
skill2.setEnabled(false);
lblSkill3 = new JLabel("Skill 3:");
c.gridx = 1;
c.gridy = 15;
panel.add(lblSkill3, c);
skill3 = new JButton(MiniRPG.players.get(setupPlayerIndex).getSkill3());
c.gridx = 2;
c.gridy = 15;
panel.add(skill3, c);
skill3.setEnabled(false);
lblSkill4 = new JLabel("Skill 4:");
c.gridx = 1;
c.gridy = 16;
panel.add(lblSkill4, c);
skill4 = new JButton(MiniRPG.players.get(setupPlayerIndex).getSkill4());
c.gridx = 2;
c.gridy = 16;
panel.add(skill4, c);
skill4.setEnabled(false);
skill1.addActionListener(e);
skill2.addActionListener(e);
skill3.addActionListener(e);
skill4.addActionListener(e);
return panel;
}
パネルをGUIに追加する方法
final JTabbedPane characterInfoPane = new JTabbedPane();
while (setupPlayerIndex < 4) {
JComponent panel = makeTextPanel("");
characterInfoPane.addTab(minirpg.MiniRPG.players.get(setupPlayerIndex).getName(), null, panel,
"");
setupPlayerIndex++;
}
xが選択されたプレーヤーである関連ラベルを現在どのように変更しようとしているのか
movesLeft.setText(Integer.toString(MiniRPG.players.get(x).getMoves()));
私が探していることを行うことが可能かどうかというこの質問に答えるために追加コードが必要かどうかを教えてください。