从多个类访问方法

时间:2015-04-19 21:59:49

标签: java class object methods invoke

我正在制定一个程序,根据房间的尺寸和所选择的地板类型计算地板的成本。我有5个班级(CostCustomerInfoOrderSummaryMainFormMainApp),该计划本身有3个标签(费用,客户信息,订单摘要)。

将每个选项卡实例化为MainForm类中的相应对象。我遇到的问题是我的OrderSummary类需要调用getFloorArea()类中的getTotalCost()Cost方法,还需要调用getCustName()来自getCustAddress()类的CustomerInfo方法。每个选项卡本身都能正常工作(计算区域,建议房间的成本/获取客户的姓名和地址),但我无法弄清楚如何将此信息提取到OrderSummary类中。 Order Summary选项卡只显示所有信息为null。

我确定这是因为我需要在Cost类中实例化CustomerInfoOrderSummary类,但我无法弄清楚如何做到这一点。我觉得问题是在创建标签时创建了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类中使变量和方法保持静态,但计算和成本在该选项卡本身中不起作用。例如,我的清除按钮将清除除静态变量之外的所有变量。

1 个答案:

答案 0 :(得分:2)

您可以在Cost课程中将CustomerInformationOrderSummary对象传递给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;
    }

    ...
}