2015-05-08 14 views
5

Ich arbeite an einem Spiel, wo Sie Ihre Statistiken in einem Geschäft aktualisieren können. Wenn Sie etwas kaufen, sollte es das JLabel aktualisieren, das Ihre Münzen zeigtaktualisieren JFrame Java ohne neue JFrame

Gibt es eine Möglichkeit, das zu tun, ohne einen neuen JFrame zu machen?

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

Dies ist der Code der Action wo ich der Code der Ansicht, die JFrame epix

Hier aktualisieren mag

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

Können Sie einen Teil Ihres Codes veröffentlichen, um ihn anzuzeigen. Dies hilft viel – user2891133

+2

getan @ user2891133 –

+0

Post Rest der Klasse bitte :) Zumindest können wir sehen, wo die JLabel und wo es hinzugefügt. – user2891133

Antwort

2

Sie nicht zu aktualisieren, haben die Frame oder JPanel. Im Actionlistener müssen Sie die CardLayout 'upgrade cards' wie im levelauswahllistener anzeigen. Dann sollte es es auffrischen.

2
menuCardPlayerLabel.setText(yourVariable); 
+2

bereits versucht, dass ... –

+0

hat es nicht aktualisiert –

+3

ok. Wenn Sie Ihre Frage bearbeiten und zu einem funktionierenden Beispiel machen, können wir es versuchen. – user2891133