我正在开发一个程序,该程序根据房间的尺寸和所选地板的类型来计算地板的成本。我有5个类(Cost
,CustomerInfo
,OrderSummary
,MainForm
和MainApp
),并且程序本身具有3个选项卡(“成本”,“客户信息”,“订单摘要”)。
每个选项卡都被实例化为MainForm
类中的相应对象。我遇到的问题是我的OrderSummary
类需要从getFloorArea()
类调用getTotalCost()
和Cost
方法,还需要从getCustName()
调用getCustAddress()
和CustomerInfo
方法类。每个选项卡本身都可以正常工作(计算面积,拟议房间的成本/获取客户的姓名和地址),但是我不知道如何将这些信息提取到OrderSummary
类中。 “订单摘要”选项卡仅将所有信息显示为空。
我确定这是因为我需要在Cost
类中实例化CustomerInfo
和OrderSummary
类,但是我不知道该怎么做。我觉得问题是在创建选项卡时会创建3个不同的对象,但是我不知道如何访问OrderSummary
类输入到每个选项卡中的信息。真的很感谢我的帮助,我正在努力寻找解决办法。
我可以根据需要提供代码,但这是一个相当长的程序。
编辑:以下是我认为会有所帮助的一些内容:
这是在我的MainForm中创建的选项卡:
jtp.addTab("Cost", new Cost());
jtp.addTab("Customer Info", new CustomerInfo());
jtp.addTab("Order Summary", new OrderSummary());
这是Cost类中的方法getFloorArea()
public double getFloorArea() {
FloorLength = Double.parseDouble(enterLength.getText());
FloorWidth = Double.parseDouble(enterWidth.getText());
FloorArea = FloorLength * FloorWidth;
return FloorArea;
}
这是我的类OrderSummary,在其中我无法弄清楚如何调用这些函数来显示信息:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import helpers.*;
@SuppressWarnings("serial")
public class OrderSummary extends JPanel {
JTextArea orderSummary;
public OrderSummary() {
createPanel();
}
private void createPanel() {
super.setLayout(new GridBagLayout());
GridBagConstraints bag = new GridBagConstraints();
bag.fill = GridBagConstraints.BOTH;
bag.anchor = GridBagConstraints.FIRST_LINE_START;
bag.insets = new Insets(5,5,5,5);
bag.gridx = 0;
bag.gridy = 0;
orderSummary = new JTextArea(5, 20);
orderSummary.setFont(new Font("Arial", Font.BOLD, 12));
orderSummary.setBackground(Color.WHITE);
this.add(orderSummary, bag);
//This is my trouble area, I can't figure out how to access the classes to display the information in this JTextArea
orderSummary.setText("Customer Name: " + CustomerInfo.getFirstName() + " " + CustomerInfo.getLastName() +
"\nAddress: " + CustomerInfo.getStreet() + "\n" + CustomerInfo.getCity() + "\n" + CustomerInfo.getCustState() + "\n" + CustomerInfo.getZip() +
"\n\nTotal Area: " + Cost.getFloorArea() + " square feet" +
"\nCost: " + OutputHelpers.formattedCurrency(Cost.getTotalCost()));
}
}
我尝试过在Cost类中使变量和方法静态化,但是随后该选项卡本身无法进行计算和花费。例如,我的清除按钮将清除除静态变量以外的所有变量。
最佳答案
在Cost
类中创建CustomerInformation
和OrderSummary
对象时,可以将它们传递给MainForm
。尽管您可能想考虑重塑项目。
public class MainForm {
public void myMethod() {
Cost cost = new Cost();
CustomerInfo custInfo = new CustomerInfo();
OrderSummary orderSummary = new OrderSummary(cost, custInfo);
jtp.addTab("Cost", cost);
jtp.addTab("Customer Info", custInfo);
jtp.addTab("Order Summary", orderSummary);
...
}
}
像...
public class OrderSummary {
private Cost cost;
private CustomerInformation custInfo;
public OrderSummary(Cost cost, CustomerInformation custInfo) {
this.cost = cost;
this.custInfo = custInfo;
}
...
}