Java 使用其他值刷新JPanel

Java 使用其他值刷新JPanel,java,jpanel,Java,Jpanel,今天我开始学习Java,我被困在这里,我不知道如何使用按钮刷新面板。这是我的密码: import java.awt.GridLayout; import java.util.Random; import javax.swing.*; public class App { public static int STR = 0, aPower = 0, sPower = 0, INT = 0, STA = 0, DEF = 0; private static void GenerateStatu

今天我开始学习Java,我被困在这里,我不知道如何使用按钮刷新面板。这是我的密码:

import java.awt.GridLayout;
import java.util.Random;
import javax.swing.*;

public class App {

public static int STR = 0, aPower = 0, sPower = 0, INT = 0, STA = 0, DEF = 0;

private static void GenerateStatus(){
    Random randomGenerator = new Random();
    STR = randomGenerator.nextInt(50);
    aPower = randomGenerator.nextInt(50);
    sPower = randomGenerator.nextInt(50);
    INT = randomGenerator.nextInt(50);
    STA = randomGenerator.nextInt(50);
    DEF = randomGenerator.nextInt(50);
}

private static void FirstTimeInGame() {
    String[] items = {"Warrior", "Mage", "Druid", "Scout"};
    JComboBox combo = new JComboBox(items);
    JTextField Name = new JTextField();
    JPanel panel = new JPanel(new GridLayout(0, 1));

    GenerateStatus();

    panel.add(new JLabel("Name", SwingConstants.CENTER));
    panel.add(Name);
    panel.add(new JLabel("Class", SwingConstants.CENTER));
    panel.add(combo);
    panel.add(new JLabel("Stats", SwingConstants.CENTER));
    panel.add(new JLabel("Strength           " + STR));
    panel.add(new JLabel("Attack Power  " + aPower));
    panel.add(new JLabel("Spell Power     " + sPower));
    panel.add(new JLabel("Intellect            " + INT));
    panel.add(new JLabel("Stamina            " + STA));
    panel.add(new JLabel("Armor               " + DEF));

    String[] buttons = {"Create!", "Randomize!", "Cancel"};

    int result = JOptionPane.showOptionDialog(null,
            panel,
            "Welcome",
            JOptionPane.YES_NO_CANCEL_OPTION,
            JOptionPane.PLAIN_MESSAGE,
            null,
            buttons,
            buttons[2]
            );

    if (result == JOptionPane.OK_OPTION) {
        System.out.println(combo.getSelectedItem()
                + " " + Name.getText());
    }
    else if (result == JOptionPane.NO_OPTION){
        GenerateStatus();
        panel.validate();
        panel.repaint();

    }
    else{
        System.out.println("CANCEL");
    }

}

public static void main(String[] args) {
    FirstTimeInGame();
}
}
函数GenerateStatus()生成随机数。当我按下“随机化”按钮时窗口正在关闭。


有人能帮我吗?请?

您需要将JLabel存储在类级成员中,而不仅仅是将其添加到面板中。 单击按钮时,需要更改现有标签中的文本

在这附近:

public static int STR = 0, aPower = 0, sPower = 0, INT = 0, STA = 0, DEF = 0;

然后
panel.add(新的JLabel(“强度”+STR))变成

strLabel = new JLabel("Strength           " + STR);
panel.add(strLabel);

现在,您可以从其他地方更改
strLabel
的文本。

您显示的代码似乎与问题无关……我想在按下“随机化”按钮时使用它刷新“统计”值。我该怎么做?我们怎么知道?你还没有向我们展示任何关于“统计”的代码。我更新了它!请再核对一下。对不起,你能写一部分代码吗?我不知道如何做到这一点,第一次在java中:)但是,当我按下“随机化!”时,窗口正在关闭,如何使它仍然保持不动?我认为这里没有足够的代码来告诉。。。你的指纹告诉你什么?代码的哪些部分被执行?
strLabel = new JLabel("Strength           " + STR);
panel.add(strLabel);