0

コンポーネントをドロップできる JTable があります。これらのコンポーネントの一部は、テーブルへの挿入としてのみドロップできます (既存のセルにはドロップできません)。

私の質問は、これらのコンポーネントのセルへのドロップを禁止する方法です。私は次のようなものを試しました:

JTable table = new JTable();
table.setDropMode(DropMode.ON_OR_INSERT_COLS);
table.setTransferHandler(new ExampleTransferHandler());
boolean onlyColumnInsert = true;

private class ExampleTransferHandler extends TransferHandler{
    public boolean canImport(TransferSupport support){
        if(onlyColumnInsert){
            return table.getDropLocation().isInsertColumn();
        }else{
            return true;
        }
    }
}

isInsertColumn() はドロップが完了した後にのみ設定されるためです。ドロップによって TransferHandler の canImport() メソッドから列が挿入されるかどうかを検出する他の方法はありますか?

ありがとう!

4

1 に答える 1

0

TransferSupport が運ぶ DropLocation を JTable.DropLocation にキャストすることで、この問題の回避策を見つけました。

private class ExampleTransferHandler extends TransferHandler{
  public boolean canImport(TransferSupport support){
    if(onlyColumnInsert){
        return ((JTable.DropLocation)support.getDropLocation()).isInsertColumn();
    }else{
        return true;
    }
  }
}
于 2012-07-05T09:49:18.050 に答える