概要

コンポーネントにマウスカーソルがある場合だけ表示される半透明のJToolBarを追加します。

サンプルコード

class ImageCaptionLabel extends JLabel implements HierarchyListener {
  private float alpha = 0f;
  private 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を追加しています。

参考リンク

コメント