2015-05-08 17 views
5

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); 

    } 
+0

Puoi pubblicare parte del tuo codice da mostrare. Questo aiuta molto – user2891133

+2

done @ user2891133 –

+0

Post resto della classe per favore :) Almeno così possiamo vedere dove la JLabel e dove è stata aggiunta. – user2891133

risposta

2

Non è necessario per aggiornare la Frame o JPanel. Nell'elenco di azioni devi mostrare le carte di aggiornamento di CardLayout, come hai fatto con levelauswahllistener. Quindi dovrebbe aggiornarlo.

2
menuCardPlayerLabel.setText(yourVariable); 
+2

già provato che ... –

+0

non ha aggiornato anche –

+3

ok. Se modifichi la tua domanda e ne fai un esempio funzionante, possiamo provarla. – user2891133