セルサイズの制限を受けないテーブルセルエディタ

最近、Swing を使用しての GUI アプリケーションを仕事で作ってます。

先週は、1文字ぐらいしか入らないセルに対する編集を行なうためのセルエディタを作成してました。
セルエディタが起動されるとセルと同じ位置にウィンドウを表示し、セルエディタに対するフォーカス設定や、キー入力イベントなどをウィンドウ内のコンポーネントに委譲することで、セルのサイズによる制限を受けないセルエディタを作成しました。

セルのサイズより大きいセルエディタにするだけならば、エディタコンポーネントの setBounds メソッドをオーバーライドして、強制的に一定サイズ以下にならないようにすればよいのですが、それではテーブルの端のセルを編集する場合や、テーブルコンポーネント自体のサイズが小さい場合に、セルエディタが入りきらないことがあります。
そこで、JComboBox のようにウィンドウを利用することで画面外にはみ出す場合でも全体が表示されるようなセルエディタを作成しました。

一応、再利用しやすい形にしたので、いろいろなパターンで使用できるかもしれません。
使用時は、もともとのセルエディタをラップする形でテーブルに設定すればいいだけなんで。
以下みたいな感じで使用できます。

    JTable table = new JTable();
    // PopupTableCellEditor で本来のセルエディタを包むだけ
    table.setDefaultEditor(Object.class, new PopupTableCellEditor(new DefaultCellEditor(new JTextField()));

以下は、JScrollPane + JTextArea をセルエディタとした場合のスクリーンショットです。