Как передать объект другого класса в метод ActionListener?

Есть такой фрагмент кода:

public class InputWindow extends JDialog implements ActionListener
{
    JButton cancel = new JButton("Отмена");
    JButton add = new JButton("Добавить");
    JComboBox<String> list = new JComboBox<String>();

    
public InputWindow(Window window) 
{
    setJComboBox(list);
    setModal(true);
    setTitle("Добавить потребитель");
    setPreferredSize(new Dimension (400,300));
    pack();

    Container container = getContentPane();
    container.setLayout(new BorderLayout());
    container.add(list, BorderLayout.NORTH);
    cancel.addActionListener(this);
    add.addActionListener(this);
    container.add(cancel,BorderLayout.WEST);
    container.add(add, BorderLayout.EAST);


    setVisible(true);
}
private void setJComboBox(JComboBox<String> list)
{
    try {
        FileReader file = new FileReader("Input.txt");
        Scanner sc = new Scanner(file);
        String inputLine = sc.nextLine();
        list.setEditable(true);
        while (sc.hasNextLine())
        {
            String next = inputLine.split(" ")[0];
            list.addItem(next);
            inputLine = sc.nextLine();
        }   
        sc.close();
    } catch (FileNotFoundException e) {
        
        e.printStackTrace();
    }
        
}
@Override
public void actionPerformed(ActionEvent e) {
    String command = e.getActionCommand();
        if (command.equals("Отмена"))
            dispose();
        if (command.equals("Добавить"))
            {
                DefaultTableModel model = (DefaultTableModel) window.InputArea.getModel();
                model.addRow(new Object[]{(window.InputArea.getRowCount()+1), list.getSelectedItem(),"3"});
                dispose();
            }
}
}

Никак не могу заставить работать программу после строки if (command.equals("Добавить")). Потому что объект, который там используется является экземпляром другого класса.

Я понимаю, что мне нужно передать ссылку на этот объект, но как это сделать в метод ActionListener? Я пробовал запустить обработку метода, который содержится в другом классе, из которого "пришел" тот объект, но здесь проблема возникает с тем, что метод должен быть статическим. А если он будет статический, то и ссылка типа "this" не будет работать.

Помогите пожалуйста решить проблему, либо обойти этот кусок кода.


Ответы (1 шт):

Автор решения: Roman Konoval

Сохраните объект, который получаете в конструкторе, в поле и потом его используйте:

public class InputWindow extends JDialog implements ActionListener
{
    JButton cancel = new JButton("Отмена");
    JButton add = new JButton("Добавить");
    JComboBox<String> list = new JComboBox<String>();
    Window window;
    
    public InputWindow(Window window) 
    {
        this.window = window;
        // дальше все как и было
    }

    // все остальное без изменений
→ Ссылка