Sto lavorando a un gioco in cui è possibile aggiornare le statistiche in un negozio. Quando acquisti qualcosa dovrebbe aggiornare JLabel che mostra le tue moneteaggiorna JFrame Java senza fare new JFrame
C'è un modo per farlo senza creare un nuovo JFrame?
public void actionPerformed(ActionEvent e) {
user.setCoin(user.getCoin() - 5);
user.setMaxJump(5);
EpixController.getInstance().coinsUpdate(user, -5);
SwingUtilities.updateComponentTreeUI(epix);
epix.revalidate();
epix.repaint();
}
Questo è il codice del ActionListener dove voglio aggiornare la JFrame Epix
Ecco il codice della vista
public EpixView(User user) {
this.setUser(user);
JFrame epix = new JFrame();
System.out.println(user.getMaxJump());
epix.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
epix.setResizable(false);
epix.setBounds(100, 100, 801, 523);
epix.setLocationRelativeTo(null);
epix.getContentPane().removeAll();
/*
* menuCard
*/
menuCard.setLayout(null);
//coin
menuCardCoinImage.setBounds(0, 10, 64, 64);
menuCard.add(menuCardCoinImage);
menuCardCoinImage.setIcon(new ImageIcon(coinSpinPath));
menuCardCoinLabel = new JLabel("" + getUser().getCoin());
menuCardCoinLabel.setFont(new Font("Modern No. 20", Font.PLAIN, 26));
menuCardCoinLabel.setBounds(67, 10, 56, 64);
menuCard.add(menuCardCoinLabel);
//player
menuCardPlayerLabel = new JLabel("Willkommen zurück, " + getUser().getUsername());
menuCardPlayerLabel.setBounds(598, 18, 239, 36);
menuCard.add(menuCardPlayerLabel);
spielenButton.setBounds(485, 319, 89, 23);
menuCard.add(spielenButton);
ranglisteButton.setBounds(485, 353, 89, 23);
menuCard.add(ranglisteButton);
menuCardBackgroundImage.setIcon(new ImageIcon(backgroundPath));
menuCardBackgroundImage.setBounds(0, 0, 801, 523);
menuCard.add(menuCardBackgroundImage);
cards.add(menuCard, "menuCard");
/*
* upgradeCard
*/
upgradeCard.setLayout(null);
//coin
upgradeCardCoinImage.setBounds(0, 10, 64, 64);
upgradeCardCoinImage.setIcon(new ImageIcon(coinSpinPath));
upgradeCard.add(upgradeCardCoinImage);
upgradeCardCoinLabel = new JLabel(""+ getUser().getCoin());
upgradeCardCoinLabel.setBounds(67, 10, 56, 64);
upgradeCardCoinLabel.setFont(new Font("Modern No. 20", Font.PLAIN, 26));
upgradeCard.add(upgradeCardCoinLabel);
//player
upgradeCardPlayerLabel = new JLabel("Willkommen zurück, " + getUser().getUsername());
upgradeCardPlayerLabel.setBounds(598, 18, 239, 36);
upgradeCard.add(upgradeCardPlayerLabel);
//maxHealthBar
healthLabel.setHorizontalAlignment(SwingConstants.RIGHT);
healthLabel.setBounds(191, 127, 110, 36);
upgradeCard.add(healthLabel);
JProgressBar maxHealthBar = new JProgressBar();
maxHealthBar.setValue(0);
maxHealthBar.setBounds(327, 127, 185, 36);
upgradeCard.add(maxHealthBar);
plusHealthButton.setBounds(522, 130, 41, 30);
upgradeCard.add(plusHealthButton);
//maxJumpBar
jumpLabel.setHorizontalAlignment(SwingConstants.RIGHT);
jumpLabel.setBounds(191, 174, 110, 36);
upgradeCard.add(jumpLabel);
JProgressBar maxJumpBar = new JProgressBar();
maxJumpBar.setValue(0);
maxJumpBar.setBounds(327, 174, 185, 36);
upgradeCard.add(maxJumpBar);
plusJumpButton.setBounds(522, 177, 41, 30);
plusJumpButton.addActionListener(new PlusJumpListener(getUser(), maxJumpBar, epix));
upgradeCard.add(plusJumpButton);
//maxSpeed
speedLabel.setHorizontalAlignment(SwingConstants.RIGHT);
speedLabel.setBounds(191, 221, 110, 36);
upgradeCard.add(speedLabel);
JProgressBar maxSpeedBar = new JProgressBar();
maxSpeedBar.setValue(0);
maxSpeedBar.setBounds(327, 221, 185, 36);
upgradeCard.add(maxSpeedBar);
plusSpeedButton.setBounds(522, 224, 41, 30);
upgradeCard.add(plusSpeedButton);
//damageBar
damageLabel.setHorizontalAlignment(SwingConstants.RIGHT);
damageLabel.setBounds(191, 268, 110, 36);
upgradeCard.add(damageLabel);
JProgressBar damageBar = new JProgressBar();
damageBar.setValue(0);
damageBar.setBounds(327, 268, 185, 36);
upgradeCard.add(damageBar);
plusDamageButton.setBounds(522, 271, 41, 30);
upgradeCard.add(plusDamageButton);
levelAuswählenButton.setBounds(395, 361, 168, 30);
upgradeCard.add(levelAuswählenButton);
upgradeZurückButton.setBounds(254, 361, 131, 30);
upgradeCard.add(upgradeZurückButton);
upgradeCardBackgroundImage.setBounds(0, 0, 801, 523);
upgradeCardBackgroundImage.setIcon(new ImageIcon(backgroundPath));
upgradeCard.add(upgradeCardBackgroundImage);
cards.add(upgradeCard, "upgradeCard");
/*
* levelAuswahlCard
*/
levelAuswahlCard.setLayout(null);
level1Button.setBounds(67, 159, 171, 170);
EpixController.getInstance().checkLevelSaved(user, level1Button);
levelAuswahlCard.add(level1Button);
level2Button.setBounds(308, 159, 171, 170);
EpixController.getInstance().checkLevelSaved(user, level2Button);
levelAuswahlCard.add(level2Button);
bossLevelButton.setBounds(550, 159, 171, 170);
EpixController.getInstance().checkLevelSaved(user, bossLevelButton);
levelAuswahlCard.add(bossLevelButton);
levelZurückBtton.setBounds(334, 378, 121, 28);
levelAuswahlCard.add(levelZurückBtton);
levelAuswahlCardCoinImage.setBounds(0, 10, 64, 64);
levelAuswahlCardCoinImage.setIcon(new ImageIcon(coinSpinPath));
levelAuswahlCard.add(levelAuswahlCardCoinImage);
levelAuswahlCardCoinLabel = new JLabel("" + getUser().getCoin());
levelAuswahlCardCoinLabel.setBounds(67, 10, 56, 64);
levelAuswahlCardCoinLabel.setFont(new Font("Modern No. 20", Font.PLAIN, 26));
levelAuswahlCard.add(levelAuswahlCardCoinLabel);
levelAuswahlCardPlayerLabel = new JLabel("Willkommen zurück, " + getUser().getUsername());
levelAuswahlCardPlayerLabel.setBounds(598, 18, 239, 36);
levelAuswahlCard.add(levelAuswahlCardPlayerLabel);
levelAuswahlCardBackgroundImage.setIcon(new ImageIcon(backgroundPath));
levelAuswahlCardBackgroundImage.setBounds(0, 0, 801, 523);
levelAuswahlCard.add(levelAuswahlCardBackgroundImage);
cards.add(levelAuswahlCard, "levelAuswahlCard");
/*
* Listener
*/
//menuCard
spielenButton.addActionListener(new MenuCardButtonListener(cards));
//upgradeCard
upgradeZurückButton.addActionListener(new UpgradeCardButtonListener(cards));
levelAuswählenButton.addActionListener(new UpgradeCardButtonListener(cards));
//levelAuswahlCard
levelZurückBtton.addActionListener(new LevelAuswahlCardButtonListener(cards, getUser(), epix));
level1Button.addActionListener(new LevelAuswahlCardButtonListener(cards, getUser(), epix));
level2Button.addActionListener(new LevelAuswahlCardButtonListener(cards, getUser(), epix));
bossLevelButton.addActionListener(new LevelAuswahlCardButtonListener(cards, getUser(), epix));
epix.setContentPane(cards);
epix.setVisible(true);
}
Puoi pubblicare parte del tuo codice da mostrare. Questo aiuta molto – user2891133
done @ user2891133 –
Post resto della classe per favore :) Almeno così possiamo vedere dove la JLabel e dove è stata aggiunta. – user2891133