ActionListener ничего не делает при нажатии кнопки - PullRequest
0 голосов
/ 28 ноября 2018
public class ReadGameDetailsWindow extends JFrame implements ActionListener {

    private GameFactory theFactory = GameFactory.getInstance();
    private HashMap<String, Game> theListOfGames = theFactory.listOfGames();

    JTable table;

    // Delete game panel
            JPanel deletePanel = new JPanel(new GridLayout(2,2));
            JLabel theDeleteGameName = new JLabel("Game Name:");
            JTextField theDeleteGameNameField = new JTextField();
            JButton theDeleteCancelButton = new JButton("Clear");
            JButton theDeleteOKButton = new JButton("Delete");

    String[] columns = {"Name", "Developer", "Genre", "Rating"};
    Object[][] tableData = new Object[theListOfGames.keySet().size()][4];

    public void fillDetails() {
        int index = 0;
        for (String key : theListOfGames.keySet())
        {
            Game game = theListOfGames.get(key);
            tableData[index][0] = game.getName();
            tableData[index][1] = game.getDeveloper();
            tableData[index][2] = game.getGenre();
            tableData[index][3] = game.getOutOfTen() + "/10";
            index++;
        }
    }

    public ReadGameDetailsWindow() {
        fillDetails();

        deletePanel.add(theDeleteGameName);
        deletePanel.add(theDeleteGameNameField);
        deletePanel.add(theDeleteCancelButton);
        deletePanel.add(theDeleteOKButton);

        TitledBorder deleteBorder = BorderFactory.createTitledBorder("Delete Section");

        table = new JTable(tableData, columns);
        table.setPreferredScrollableViewportSize(new Dimension(500, 50));
        JScrollPane scrollPane = new JScrollPane(table);

        JPanel controls = new JPanel();
        controls.setLayout(new GridLayout(1,3));

        controls.add(deletePanel);

        setLayout(new GridLayout(2,1));

        getContentPane().add(scrollPane);
        getContentPane().add(controls);
        setVisible(true);
        setSize(800,800);


    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(theDeleteOKButton)) {
            try {
                System.out.println("Delete Button Pressed");
                String aGameName = theDeleteGameNameField.getText();
                theFactory.deleteGame(aGameName);
                fillDetails();
                table.repaint();
                JOptionPane.showMessageDialog(new JFrame(), aGameName + " has been deleted!");
            } catch (Exception aException) {
                aException.printStackTrace();
            }
        }
    }
}

Итак, по сути, ничего не происходит, когда я нажимаю на кнопку «УдалитьOK».Я пытаюсь удалить запись из моего HashMap, из которой отображается информация.

Я пытался создавать и создавать экземпляры кнопок внутри и снаружи главного конструктора и пытался добавить actionListeners по отдельности, но я не могуКажется, что реакция вообще не получается.

Нужно ли перемещать кнопки или есть другой способ, которого мне не хватает?Извините, я довольно новичок в Swing и просто пытаюсь заставить его работать.

1 Ответ

0 голосов
/ 28 ноября 2018

вам нужно добавить слушателя действия к вашим кнопкам.сделать это:

theDeleteCancelButton.addActionListener(this); //detects button press action for theDeleteCancelButton
theDeleteOKButton.addActionListener(this); //detects button press action for theDeleteOKButton
...