Как добавить событие mouseClicked в таблицу колебаний? - PullRequest
1 голос
/ 07 мая 2010

Я новый, ужасно зеленый пользователь Swing. Мне удалось создать класс таблицы, используя примеры из учебников java.sun, и мне удалось динамически загрузить в него данные. Я хочу иметь возможность реагировать на щелчок по строке, отображая диалоговое окно. Как добавить обработчик событий, который будет идентифицировать выбранный номер строки?

Основной код функции:

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            try {
                MainWindow window = new MainWindow();
                window.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                //Create and set up the content pane.
                createAndShowGUI();
                //...
            }
        }
    }
}

и

private static void createAndShowGUI() {
    //Create and set up the window.

    JFrame frame = new JFrame("Data Table");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Create and set up data of the content pane.
    TableClass mainTable = new TableClass(fh.getColNames(), fh.getTableContent());

    mainTable.setOpaque(true);
    frame.setContentPane(mainTable);


    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

Спасибо

Ответы [ 2 ]

5 голосов
/ 07 мая 2010
       table.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 1) {
                    int selectedRowIndex = table.getSelectedRow();
                    //show your dialog with the selected row's contents
                }
            }
        });
1 голос
/ 08 мая 2010

Пара баллов.

Ответ от Божидара Бацова правильный. Однако вы не обязательно имеете ссылку на таблицу (если, например, ваш слушатель мыши находится в другом классе или что-то в этом роде). Дело в том, что таблицу можно найти с помощью метода getSource () MouseEvent. Вы можете безопасно привести его к JTable.

Кроме того, table.getSelectedRow () может возвращать -1, если в таблице еще не выбрано ни одной строки. Это произойдет, если пользователь, например, щелкнет в «пробеле» таблицы (область за пределами сетки, но все еще в текстовой области). Только не забудьте проверить на -1 в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...