2009-02-09 43 views
3

在Outlook中,如果将列标题拖出表格,我可以删除表格列。如何在Java中使用Swing JTable执行相同的操作?如何通过拖动从JTable中删除列?

默认拖动&拖放操作是不可能的,因为此功能与目标位置无关。它仅取决于拖动源。

+0

解决方案是否有效? – 2009-02-16 08:52:25

回答

3

对于这个答案我用SimpleTableDemo。我只需将一个MouseListener添加到表中。这里MouseListener:

class MyMouseListener implements MouseListener { 
    public void mouseClicked(MouseEvent arg0) {} 
    public void mouseEntered(MouseEvent arg0) {} 
    public void mouseExited(MouseEvent arg0) {} 
    public void mousePressed(MouseEvent arg0) {} 
    public void mouseReleased(MouseEvent m) { 
    JTableHeader tableHeader = (JTableHeader)m.getComponent(); 
    JTable table = tableHeader.getTable(); 
    if (!table.getBounds().contains(m.getPoint())) { 
     table.removeColumn(table.getColumnModel().getColumn(
      tableHeader.columnAtPoint(m.getPoint()))); 
    } 
    } 
} 

这是一个非常基本的方式,没有任何异常处理或wathever。但至少它有效。