У меня есть метод в классе, который содержит основную функцию addNewProduct(String name)
В одном из моих JPanels у меня есть JButton, у меня есть actionPerformed()
, это в другом классе, называемом DesktopGUI
. main создает копию DesktopGUI
, и этот объект создает рамку и все компоненты. Я хотел бы иметь способ вызвать методы в основном классе с DesktopGUI
.вызов метода, который находится в основном классе из другого класса
основного класс (это строка коды, которые находятся в вопросе. Это не полное представление моего кода. Строки коды также могут быть не в порядке, они были бы в моем реальном приложении.)
public List<Product> productList;
public void addNewProduct(String name){
Product product = new Product();
product.setName(name);
productList.add(product);
}
DesktopGUI gui = new DesktopGUI();
frame = gui.getFrame();
В конструкторе DesktopGUI
он создает и отображает рамку.
в секции кода я есть
SaveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.out.println("Save Button Pressed");
System.out.println("Name: "+(String)fileNameField.getText());
/*the addNewProduct() is located in the class for main*/
addNewProduct((String)fileNameField.getText());
}
});
Я был в состоянии назвать класс, если он был статичным, то класс ProductList всегда будет иметь размер, равный нулю.
дал простой пример
public class Foo {
public List<Product> productList;
public static void main(String[] args) {
A a = new A();
}
public void addNewProduct(String name){
Product product = new Product();
product.setName(name);
productList.add(product);
}
}
class A {
SaveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
foo.addNewProduct("Hello World");
}
});
}
Я думал о передаче основного класса в другой класс, но передача 'this' дает ошибку. при вызове 'this' в main это объем основного или объема основного класса. –
@ PatrickW.McMahon: см. Правки. Если вы получаете сообщение об ошибке, пожалуйста, упростите свой код (аналогично тому, что я сделал выше), и покажите нам свой новый код и вашу ошибку/проблему. –
Я обновил свой вопрос на основе вашего примера, но изменил его в соответствии с тем, что я пытаюсь сделать. –