JTable 可点击列标题

发布于 2024-10-10 12:16:56 字数 612 浏览 1 评论 0原文

我正在尝试制作一个可点击的列标题(以便每当单击时都会调用一个方法)。
图像链接(因为我还没有 10 个声誉) http:// img156.imageshack.us/img156/5764/clickablecolumn.png
列标题为红色矩形。
到目前为止,我所做的就是每当按下任何列字段(例如 James、Benny-G 和 Rokas 的字段)时都会做出响应。 代码:

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
    }

I am trying to make a clickable column header (so that a method would be called whenever one's clicked).

link to image (since I don't have 10 reputation yet) http://img156.imageshack.us/img156/5764/clickablecolumn.png

The column header is in red rectangle.

What I've done so far is responding whenever any column field (such as the one with James, Benny-G and Rokas) is pressed.
The code:

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
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷子口的你 2024-10-17 12:16:56

您想要向表头添加鼠标侦听器,该表头由 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);

You want to add a mouse listener to the table header, which is represented by 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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文