Java 如何清除旧窗口的内容并向其中添加新信息?
这个问题措词不当,但我会尽力解释。我已经创建了一个自动售货机,其中会弹出一个窗口,要求用户输入钱。然后,他们移动到主机器窗口,该窗口显示他们输入的数字,即他们拥有的金额。我有一个按钮,“AddMoney”,应该是在当前的金额上增加钱,但我不知道怎么做 例如,用户输入他们有2美元,然后点击enter键,进入主机器界面,显示他们有2美元。。用户点击“添加钱”按钮并键入3,表示他们还有3美元。这意味着他们有5美元,并将在主界面上表示他们有5美元 货币输入的代码Java 如何清除旧窗口的内容并向其中添加新信息?,java,swing,Java,Swing,这个问题措词不当,但我会尽力解释。我已经创建了一个自动售货机,其中会弹出一个窗口,要求用户输入钱。然后,他们移动到主机器窗口,该窗口显示他们输入的数字,即他们拥有的金额。我有一个按钮,“AddMoney”,应该是在当前的金额上增加钱,但我不知道怎么做 例如,用户输入他们有2美元,然后点击enter键,进入主机器界面,显示他们有2美元。。用户点击“添加钱”按钮并键入3,表示他们还有3美元。这意味着他们有5美元,并将在主界面上表示他们有5美元 货币输入的代码 public void actionPe
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();
}
}
注意事项:
- 您可以对文本字段使用,而不是在输入值后检查该值
- 您可以使用我在每次按下按钮时开始使用的输入对话框,而不是在主窗口中使用文本字段