JTable кликабельный заголовок столбца - PullRequest
3 голосов
/ 06 января 2011

Я пытаюсь создать кликабельный заголовок столбца (чтобы метод вызывался при каждом нажатии).
ссылка на изображение (так как у меня еще нет 10 репутации) http://img156.imageshack.us/img156/5764/clickablecolumn.png
Заголовок столбца в красном прямоугольнике.
То, что я сделал до сих пор, - это реагирование на нажатие любого поля столбца (например, поля с Джеймсом, Бенни-Джи и Рокасом). Код:

public void mouseClicked(MouseEvent e)
    {
        System.out.println("Mouse clicked");
        TableColumnModel cModel = table.getColumnModel();//cModel - column model
        int selColumn = cModel.getColumnIndexAtX(e.getX());//gets the selected column by clicked x coordinate
    }

1 Ответ

15 голосов
/ 06 января 2011

Вы хотите добавить слушателя мыши к заголовку таблицы, который представлен JTableHeader:

JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(new JTable(4, 3) {
  {
    getTableHeader().addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent mouseEvent) {
        int index = convertColumnIndexToModel(columnAtPoint(mouseEvent.getPoint()));
        if (index >= 0) {
          System.out.println("Clicked on column " + index);
        }
      };
    });
  }
}));

frame.pack();
frame.setVisible(true);
...