3

Outlook では、列ヘッダーを表の外にドラッグすると、表の列を削除できます。Swing JTable を使用して Java で同じことを行うにはどうすればよいですか?

この機能はターゲット位置に依存しないため、デフォルトのドラッグ アンド ドロップ操作はできません。ドラッグ ソースのみに依存します。

4

1 に答える 1

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())));
    }
  }
}

これは非常に基本的な方法であり、例外処理などはありません。しかし、少なくともそれは機能します。

于 2009-02-11T15:23:56.257 に答える