Java 如何使用新数据而不是按钮动态更新JFrame
所以我有一个有5个按钮的Jframe。其中一个按钮允许用户将产品添加到库存中。在用户向资源清册添加某些内容之前,其他按钮将不起作用。一旦用户向库存中添加了一些内容,用户就必须通过按下buy按钮并运行一些代码来更新Jcombobox,这些代码将arrayList中的数据添加到Jcombobox中。我的问题是,我如何跳过所有这些,并在用户向清单添加项目后立即更新它?这就是我所说的动态更新 相关代码 机器框架中的代码,该代码将信息从arraylist获取到字符串数组,并将其添加到comboboxJava 如何使用新数据而不是按钮动态更新JFrame,java,swing,jframe,Java,Swing,Jframe,所以我有一个有5个按钮的Jframe。其中一个按钮允许用户将产品添加到库存中。在用户向资源清册添加某些内容之前,其他按钮将不起作用。一旦用户向库存中添加了一些内容,用户就必须通过按下buy按钮并运行一些代码来更新Jcombobox,这些代码将arrayList中的数据添加到Jcombobox中。我的问题是,我如何跳过所有这些,并在用户向清单添加项目后立即更新它?这就是我所说的动态更新 相关代码 机器框架中的代码,该代码将信息从arraylist获取到字符串数组,并将其添加到combobox ca
case "buy":
if(product.checkInventory())
{
JOptionPane.showMessageDialog(mainMenu, "No Products in the vending machine.");
}
else
{
productList.removeItem("Product");
String tempArray[] = product.sendingInformationToVendor();
for (String tempArray1 : tempArray)
{
productList.addItem(tempArray1);
}
}
添加到productInventory类中arrayList的addProductFrame中的代码
case "enter":
if (productDescription.getText().equals("") || costField.getText().equals("")) {
JOptionPane.showMessageDialog(addProductFrame, "Filling in all the necessary fields.");
} else {
String prodName = productDescription.getText();
String tempProdCost = costField.getText();
double prodCost = Double.parseDouble(tempProdCost);
int q = (int) quantity.getValue();
Product p = new Product(prodName, prodCost, q);
proInv.addProduct(p);
JOptionPane.showMessageDialog(addProductFrame, "This product has been successfully added to the vending machine");
productDescription.setText("");
costField.setText("");
quantity.setValue(1);
}
这些代码片段都位于一个名为processAction的类中,该类实现了actionlistener,关键字case旁边的每个字符串都是每个按钮的操作命令;,因此,对frame/textfield/whatever执行更新,然后调用repainno,@Petro的建议是不正确的,因为不需要重新绘制。您需要向JComboBox的模型添加一个对象,这样做将更新combobox。在这种情况下,不需要调用重新绘制。具体的解决方案将取决于您的代码。在某些情况下,您需要手动执行此操作。我不认为他在试图按照你的建议去做,因为他确实说过如何跳过所有这些。我可能错了,我想我们会看到的。@Petro:再说一次,显示添加到JComboBox的新信息不需要重新绘制。永远不会。你需要的是让添加产品的例程发出某种通知的方式,系统的其他部分可以注册并响应。。。