Java 如何清除旧窗口的内容并向其中添加新信息?

Java 如何清除旧窗口的内容并向其中添加新信息?,java,swing,Java,Swing,这个问题措词不当,但我会尽力解释。我已经创建了一个自动售货机,其中会弹出一个窗口,要求用户输入钱。然后,他们移动到主机器窗口,该窗口显示他们输入的数字,即他们拥有的金额。我有一个按钮,“AddMoney”,应该是在当前的金额上增加钱,但我不知道怎么做 例如,用户输入他们有2美元,然后点击enter键,进入主机器界面,显示他们有2美元。。用户点击“添加钱”按钮并键入3,表示他们还有3美元。这意味着他们有5美元,并将在主界面上表示他们有5美元 货币输入的代码 public void actionPe

这个问题措词不当,但我会尽力解释。我已经创建了一个自动售货机,其中会弹出一个窗口,要求用户输入钱。然后,他们移动到主机器窗口,该窗口显示他们输入的数字,即他们拥有的金额。我有一个按钮,“AddMoney”,应该是在当前的金额上增加钱,但我不知道怎么做

例如,用户输入他们有2美元,然后点击enter键,进入主机器界面,显示他们有2美元。。用户点击“添加钱”按钮并键入3,表示他们还有3美元。这意味着他们有5美元,并将在主界面上表示他们有5美元

货币输入的代码

public void actionPerformed(ActionEvent arg0) {
    double moneyInput;
    String text = mInput.getText();
    moneyInput = Double.parseDouble (text);

    VendingMachineInterface frame;
    try {
        frame = new VendingMachineInterface(vendingMachineName, moneyInput);
        frame.setVisible(true);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我不知道这是否是完成任务的最佳方式,但我以前在类似类型的应用程序中使用过它

基本上,在JFrame中,我有一个JPanel,它的存在只是为了使用add()和remove()方法在其他面板之间切换

我创建了一个
ManagerPanel
类,该类具有以下方法:

public void switchPanel(JPanel removePanel, JPanel addPanel) {
    this.remove(removePanel);
    this.add(addPanel);
    validate();
    repaint();
}
为了切换面板,我在动作事件中使用了以下命令:

((ManagerPanel)this.getParent()).switchPanel(currentPanel.this, newPanel);

正如我所说,可能会有一个更奇特的解决方案,但这对我来说很简单,也很有效。

这是一种实现你想要的方法,但由于你没有提供MCVE,这可能不是你想要的

public class VendingMachine extends JFrame {

    static int amount = 0;

    VendingMachine() {

        JButton add = new JButton("Add amount");
        JTextField moneyInput = new JTextField(8);
        JLabel currentAmount = new JLabel("Current amount:");
        JLabel amountLabel = new JLabel(String.valueOf(amount));

        setLayout(new FlowLayout());
        add(currentAmount);
        add(amountLabel);
        add(moneyInput);
        add(add);

        add.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                String addAmountString = moneyInput.getText();
                int addAmount = 0;
                try {
                    addAmount = Integer.parseInt(addAmountString);
                } catch (NumberFormatException exp) {
                    System.out.println("Not a number, amount to add will be 0.");
                }
                amount += addAmount;
                moneyInput.setText("");
                amountLabel.setText(String.valueOf(amount));
            }
        });

        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {

        String initialString = JOptionPane.showInputDialog("Enter initial $");
        try {
            amount = Integer.parseInt(initialString);
        } catch (NumberFormatException e) {
            System.out.println("Not a number, initial amount will be 0.");
        }
        new VendingMachine();
    }
}
注意事项:

  • 您可以对文本字段使用,而不是在输入值后检查该值
  • 您可以使用我在每次按下按钮时开始使用的输入对话框,而不是在主窗口中使用文本字段

发布一个(不要发布你所有的程序,创建一个新的小程序来演示问题,我们可以自己运行)。我个人在尝试想象这里的场景时遇到了困难。你能为你的代码段包括一两个屏幕截图以及一些额外的上下文吗?你可以使用卡片布局,尤其是你想重新显示以前的视图的时候again@snickers10m我更新了post@snickers10m对此很抱歉,为了使示例更具信息性,我现在正确地更新了它。请使用,如中所示。