Outlook では、列ヘッダーを表の外にドラッグすると、表の列を削除できます。Swing JTable を使用して Java で同じことを行うにはどうすればよいですか?
この機能はターゲット位置に依存しないため、デフォルトのドラッグ アンド ドロップ操作はできません。ドラッグ ソースのみに依存します。
Outlook では、列ヘッダーを表の外にドラッグすると、表の列を削除できます。Swing JTable を使用して Java で同じことを行うにはどうすればよいですか?
この機能はターゲット位置に依存しないため、デフォルトのドラッグ アンド ドロップ操作はできません。ドラッグ ソースのみに依存します。
この回答では、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())));
}
}
}
これは非常に基本的な方法であり、例外処理などはありません。しかし、少なくともそれは機能します。