Я работаю над программой, которая вычисляет стоимость полов в зависимости от размеров комнаты и выбранного типа пола. У меня есть 5 классов (Cost
, CustomerInfo
, OrderSummary
, MainForm
и MainApp
), а сама программа имеет 3 вкладки (стоимость, информация о клиенте, сводка заказов).Доступ к методам из нескольких классов
Каждая вкладка создается как соответствующий объект в классе MainForm
. Проблема, которую я испытываю, - это класс OrderSummary
, который должен вызвать методы getFloorArea()
и getTotalCost()
класса Cost
, а также необходимо вызвать методы getCustName()
и getCustAddress()
из класса CustomerInfo
. Каждая вкладка сама по себе работает правильно (вычисление площади, стоимость предлагаемого номера/получение имени и адреса клиента), но я не могу понять, как извлечь эту информацию в класс OrderSummary
. Вкладка «Сводка заказов» показывает всю информацию как нуль.
Я уверен, что это потому, что мне нужно создать экземпляры классов Cost
и CustomerInfo
в классе OrderSummary
, но я не могу понять, как это сделать. Я чувствую, что проблема заключается в создании трех разных объектов при создании моих вкладок, но я не знаю, как получить доступ к информации, которая вводится в каждую вкладку из класса OrderSummary
. Любая помощь действительно оценена Я вытягиваю свои волосы, пытаясь понять, что делать.
Я могу предоставить код по мере необходимости, но это довольно длинная программа.
EDIT: Вот некоторые биты, которые я думаю, поможет:
Это в моем MainForm, где я создаю свои вкладки:
jtp.addTab("Cost", new Cost());
jtp.addTab("Customer Info", new CustomerInfo());
jtp.addTab("Order Summary", new OrderSummary());
Это метод 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()));
}
}
Я попытался сделать переменные и методы статическими в классе затрат, но затем вычисления и стоимость не работают внутри самой вкладки. Например, моя ясная кнопка очистит все переменные, кроме статических.
невозможно ответить точно без какого-либо кода. Просто разместите ** соответствующие ** части вашего кода, чтобы помочь нам помочь, хотя это, кажется, классическая проблема, которая может быть решена классическими шаблонами, такими как MVC. – Dici
Не могли бы вы прояснить две вещи? 1) Когда вы говорите «3 вкладки», вы говорите о коде интерфейса пользователя (например, JFrame/JTabbedPane) правильно? 2) Можете ли вы пояснить, что делает класс «MainForm»? – jrbeverly
1) Да, есть 3 JTabbedPanes. 2) Класс MainForm создает фрейм для всего графического интерфейса. – stevanc