刷新Jframe java而无需做新的jframe



我正在从事一款可以在商店中升级统计数据的游戏。当您购买东西时,应该刷新显示您的硬币的Jlabel

有没有办法在不进行新的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();
    }

这是我想刷新Jframe Epix

的ActionListener的代码

这是视图的代码

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

您不必刷新框架或jpanel。在ActionListener中,您将必须像在Levelauswahllistener中一样显示CardLayout"升级卡"。然后应该刷新它。

menuCardPlayerLabel.setText(yourVariable);

最新更新