Как передать объект другого класса в метод 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 шт):
Сохраните объект, который получаете в конструкторе, в поле и потом его используйте:
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;
// дальше все как и было
}
// все остальное без изменений