gpt4 book ai didi

java - 在 Java 中从 GUI 添加数据

转载 作者:行者123 更新时间:2023-11-29 05:51:36 24 4
gpt4 key购买 nike

所以我正在尝试创建一个零售 GUI。员工选择部门,输入项目名称、价格和折扣。他应该能够为多个项目输入数据,然后应该能够点击打印并出现一个 Jtable。我遇到的问题是编写代码以便能够为他输入的每个项目更新数组列表。我似乎每次都覆盖 position[0] 并且它不存储新项目。我也不知道从哪里开始使用 Jtable。我是 Java 的新手,所以非常感谢您提供的任何帮助。

   import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class RetailGUI extends JFrame
{

// The following variables will reference the
// custom panel objects.
private DepartmentPanel department;
private ItemPanel item;
private PricePanel price;
private TitlePanel title; // To display a greeting

// The following variables will reference objects
// needed to add Next and Exit buttons.
private JPanel buttonPanel; // To hold the buttons
private JButton nextButton,
printButton,
exitButton; // To exit the application


/**
* Constructor
*/

public RetailGUI()
{
// Display a title.
super("Retail Calculator");

setSize(600, 250);

// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);

// Create a BorderLayout manager for
// the content pane.
setLayout(new BorderLayout());

// Create the custom panels.
title = new TitlePanel();
department = new DepartmentPanel();
item = new ItemPanel();
price = new PricePanel();

// Call the buildButtonPanel method to
// create the button panel.
buildButtonPanel();

// Add the components to the content pane.
add(title, BorderLayout.NORTH);
add(department, BorderLayout.WEST);
add(item, BorderLayout.CENTER);
add(price, BorderLayout.EAST);
add(buttonPanel, BorderLayout.SOUTH);

// Pack the contents of the window and display it.
//pack();
setVisible(true);
}

/**
* The buildButtonPanel method builds the button panel.
*/

private void buildButtonPanel()
{
// Create a panel for the buttons.
buttonPanel = new JPanel();

// Create the buttons.
nextButton = new JButton("Next");
printButton = new JButton("Print");
exitButton = new JButton("Exit");

// Register the action listeners.
nextButton.addActionListener(new RetailGUI.NextButtonListener());
printButton.addActionListener(new RetailGUI.PrintButtonListener());
exitButton.addActionListener(new RetailGUI.ExitButtonListener());

// Add the buttons to the button panel.
buttonPanel.add(nextButton);
buttonPanel.add(printButton);
buttonPanel.add(exitButton);
}

/**
* Private inner class that handles the event when
* the user clicks the Next button.
*/

private class NextButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{

String departmentName,
finalItem;
float priceField,
discountField,
newPrice;

ArrayList DepartmentList = new ArrayList();
ArrayList ItemList = new ArrayList();
ArrayList PriceList = new ArrayList();
ArrayList DiscountList = new ArrayList();
ArrayList NewPriceList = new ArrayList();




departmentName = department.getDepartmentName();
finalItem = item.getItemName();
priceField = price.getPriceField();
discountField = price.getDiscountField();
newPrice = priceField - (priceField * (discountField/100));

DepartmentList.add(departmentName);



System.out.print(DepartmentList);


JOptionPane.showMessageDialog(null,"Department: " + departmentName + "\n" +
"Item Name: " + finalItem + "\n" +
"Orginal Price: $" + priceField + "\n" +
"Discount: " + discountField + "%" + "\n" +
"New Price: $" + newPrice + "\n");
}
}

private class PrintButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{


}
}

private class ExitButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
// Exit the application.
System.exit(0);
}
}
}

最佳答案

您已经在本地向 NextButtonListeneractionPerformed 方法声明了您的 ArrayList

这意味着每次单击该按钮时,您都会创建全新的、短暂的列表,将您的项目添加到其中,然后丢弃结果(允许垃圾收集器在将来的某个时候捡起它们)。

您需要将这些列表移动到范围级别,以便应用程序的各个部分可以看到它们(也许是类级别的字段?)。

与其使用多个数组列表,列表很容易彼此不同步,不如创建某种包含与交易相关的所有信息的数据对象。

假设一个 Transaction 对象,它包含 TransactionItem。每个项目将包含 departmentnameitemNameoriginalPricediscount(新价格是一个计算字段,不需要存储它)

Transaction 将包含 NTransactionItem

在每次点击时,您将获得当前的 Transaction 对象,并根据用户输入的值向其添加一个新的 TransactionItem

这将允许您为Transaction 提供支持功能,例如交易的总值(value)

这将大大简化 JTable View 的开发。

关于java - 在 Java 中从 GUI 添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com