Swing/TranslucentToolBar のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TranslucentToolBar へ行く。
- 1 (2011-09-19 (月) 17:00:43)
- 2 (2011-09-19 (月) 21:39:55)
- 3 (2012-12-18 (火) 19:22:21)
- 4 (2014-11-22 (土) 03:59:58)
- 5 (2014-12-09 (火) 21:07:10)
- 6 (2015-03-24 (火) 16:03:27)
- 7 (2015-04-08 (水) 17:12:58)
- 8 (2016-05-27 (金) 13:16:33)
- 9 (2017-08-12 (土) 21:46:39)
- 10 (2018-08-09 (木) 18:23:10)
- 11 (2019-05-22 (水) 19:35:38)
- 12 (2020-08-08 (土) 16:30:40)
- 13 (2022-01-01 (土) 01:39:43)
- category: swing folder: TranslucentToolBar title: JToolBarの半透明化とアニメーション tags: [JToolBar, Translucent, JButton] author: aterai pubdate: 2011-09-19T17:00:43+09:00 description: コンポーネントにマウスカーソルがある場合だけ表示される半透明のJToolBarを追加します。 image:
概要
コンポーネントにマウスカーソルがある場合だけ表示される半透明のJToolBar
を追加します。
Screenshot
Advertisement
サンプルコード
class ImageCaptionLabel extends JLabel implements HierarchyListener {
private float alpha = 0f;
private javax.swing.Timer animator;
private int yy = 0;
private JToolBar toolBox = new JToolBar() {
@Override protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setPaint(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
};
public ImageCaptionLabel(String caption, Icon image) {
setIcon(image);
toolBox.setFloatable(false);
toolBox.setOpaque(false);
toolBox.setBackground(new Color(0x0, true));
toolBox.setForeground(Color.WHITE);
toolBox.setBorder(BorderFactory.createEmptyBorder(2, 4, 4, 4));
// toolBox.setLayout(new BoxLayout(toolBox, BoxLayout.X_AXIS));
toolBox.add(Box.createGlue());
toolBox.add(makeToolButton("ATTACHMENT_16x16-32.png"));
toolBox.add(Box.createHorizontalStrut(2));
toolBox.add(makeToolButton("RECYCLE BIN - EMPTY_16x16-32.png"));
MouseAdapter ma = new MouseAdapter() {
@Override public void mouseEntered(MouseEvent e) {
dispatchMouseEvent(e);
}
@Override public void mouseExited(MouseEvent e) {
dispatchMouseEvent(e);
}
private void dispatchMouseEvent(MouseEvent e) {
Component src = e.getComponent();
Component tgt = ImageCaptionLabel.this;
tgt.dispatchEvent(SwingUtilities.convertMouseEvent(src, e, tgt));
}
};
toolBox.addMouseListener(ma);
// ...
View in GitHub: Java, Kotlin解説
上記のサンプルでは、以下のリンクの方法を合わせて使用して画像アイコンを表示したJLabel
に半透明にしたJToolBar
を追加しています。
JToolBar
本体の透明化はJMenuBarの背景に画像を表示するJToolBar
内部に配置するJButton
の透明化はJButtonの描画JToolBar
の表示・非表示アニメーションはJTextAreaをキャプションとして画像上にスライドイン
参考リンク
- JMenuBarの背景に画像を表示する
- JButtonの描画
- JTextAreaをキャプションとして画像上にスライドイン
- "ecqlipse 2" PNG by ~chrfb on deviantART
- アイコンを借用