有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

这个问题措词不当,但我会尽力解释的。我已经创建了一个自动售货机,其中会弹出一个窗口,要求用户输入钱。然后,他们移动到主机器窗口,它会显示他们输入的数字,即他们拥有的金额。我有一个按钮“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();
    }
}

共 (2) 个答案

  1. # 1 楼答案

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

    基本上,在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);
    

    就像我说的,可能会有一个更奇特的解决方案,但这很简单,对我来说很有效

  2. # 2 楼答案

    这是做你想做的事情的一种方式,但由于你没有提供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();
        }
    }
    

    注意事项:

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