Swing/HoverCloseButton のバックアップ差分(No.4)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/HoverCloseButton へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
--- title: JTabbedPaneのCloseButtonをフォーカスがある場合だけ表示 tags: [JTabbedPane, JButton, Focus] author: aterai pubdate: 2008-01-21T15:27:41+09:00 description: JTabbedPaneのタブを閉じるボタンを、タブにフォーカスがある場合だけ表示します。 --- * 概要 [#s04e3478] `JTabbedPane`のタブを閉じるボタンを、タブにフォーカスがある場合だけ表示します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTN-acwv2I/AAAAAAAAAbo/gFaIpQr1XGc/s800/HoverCloseButton.png) * サンプルコード [#h7af8be1] #code(link){{ public MyJTabbedPane() { super(); setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); addMouseMotionListener(new MouseMotionAdapter() { private int prev = -1; @Override public void mouseMoved(MouseEvent e) { JTabbedPane source = (JTabbedPane)e.getSource(); JTabbedPane source = (JTabbedPane) e.getSource(); int focussed = source.indexAtLocation(e.getX(), e.getY()); if(focussed==prev) return; for(int i=0;i<source.getTabCount();i++) { TabPanel tab = (TabPanel)source.getTabComponentAt(i); tab.setButtonVisible(i==focussed); if(focussed == prev) return; for(int i = 0; i < source.getTabCount(); i++) { TabPanel tab = (TabPanel) source.getTabComponentAt(i); tab.setButtonVisible(i == focussed); } prev = focussed; } }); } }} * 解説 [#bb2c52ca] 上記のサンプルでは、`JDK 6`で導入されたタブにコンポーネントを追加する機能を使って、タブ上にマウスカーソルがある場合だけ`JButton`を表示しています。 `JButton`が表示されても、そのタブ幅は常に一定で、内部のタブタイトルがクリップされるようになっています。 * 参考リンク [#c695580a] - [[JTabbedPaneにタブを閉じるボタンを追加>Swing/TabWithCloseButton]] - [[JTabbedPaneのタブ文字列をハイライト>Swing/TabTitleHighlight]] * コメント [#e680e90e] #comment #comment - タブが選択されている場合にも`JButton`を表示していましたが、これを変更してタブ上にマウスカーソルがある場合だけ`JButton`を表示するようにしました。 -- &user(aterai); &new{2008-03-19 (水) 21:09:18}; #comment