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のタブを閉じるボタンを、タブにフォーカスがある場合だけ表示します。
概要
JTabbedPane
のタブを閉じるボタンを、タブにフォーカスがある場合だけ表示します。
Screenshot
Advertisement
サンプルコード
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();
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);
}
prev = focussed;
}
});
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JDK 6
で導入されたタブにコンポーネントを追加する機能を使って、タブ上にマウスカーソルがある場合だけJButton
を表示しています。
JButton
が表示されても、そのタブ幅は常に一定で、内部のタブタイトルがクリップされるようになっています。