web-dev-qa-db-ja.com

ホバー効果をjbuttonに配置する方法は?

Java 2つのボタンを使用しているデスクトップアプリケーションを作成しようとしています。これらのボタンにホバー効果を追加したいのです。どのボタンをクリックしても、背景色が変わるはずです。

どうすれば達成できますか?

これが私のコードです:

public class Party1Party2 extends JFrame
{
    JButton b1;
    JButton b2;
    Container pane;

    public Party1Party2()
    {
        getContentPane().setBackground(new Java.awt.Color(255, 255, 255));

    b2.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            JOptionPane.showMessageDialog(frame, "Welcome to allhabad High Court");
        }
    });

    b1.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            JOptionPane.showMessageDialog(frame, "Welcome to allhabad High Court");

        }
    });
  }
}
7
user3456343

Moused EnteredおよびExited the JButtonを使用して、好きなことを実行できます。

例えば:

jButton1.addMouseListener(new Java.awt.event.MouseAdapter() {
    public void mouseEntered(Java.awt.event.MouseEvent evt) {
        jButton1.setBackground(Color.GREEN);
    }

    public void mouseExited(Java.awt.event.MouseEvent evt) {
        jButton1.setBackground(UIManager.getColor("control"));
    }
});
14
Salah

私はかつてカスタムJButtonを作成しましたが、これを使用して、アニメーション上でマウスをホバーしたときに透明度レベルを変更していました。そのボタンのコードは次のとおりです。

import javax.swing.*;
import Java.awt.*;
import Java.awt.event.MouseAdapter;
import Java.awt.event.MouseEvent;

public class HoverButton extends JButton
{
  float alpha = 0.5f;

  public HoverButton(String text)
  {
    super(text);
    setFocusPainted(false);
    setBorderPainted(false);
    setContentAreaFilled(false);
    addMouseListener(new ML());
  }

  public float getAlpha()
  {
    return alpha;
  }

  public void setAlpha(float alpha)
  {
    this.alpha = alpha;
    repaint();
  }

  public void paintComponent(Java.awt.Graphics g)
  {
    Java.awt.Graphics2D g2 = (Java.awt.Graphics2D) g;
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
    super.paintComponent(g2);
  }

  public class ML extends MouseAdapter
  {
    public void mouseExited(MouseEvent me)
    {
      new Thread(new Runnable()
      {
        public void run()
        {
          for (float i = 1f; i >= .5f; i -= .03f)
          {
            setAlpha(i);
            try
            {
              Thread.sleep(10);
            }
            catch (Exception e)
            {
            }
          }
        }
      }).start();
    }

    public void mouseEntered(MouseEvent me)
    {
      new Thread(new Runnable()
      {
        public void run()
        {
          for (float i = .5f; i <= 1f; i += .03f)
          {
            setAlpha(i);
            try
            {
              Thread.sleep(10);
            }
            catch (Exception e)
            {
            }
          }
        }
      }).start();
    }

    public void mousePressed(MouseEvent me)
    {
      new Thread(new Runnable()
      {
        public void run()
        {
          for (float i = 1f; i >= 0.6f; i -= .1f)
          {
            setAlpha(i);
            try
            {
              Thread.sleep(1);
            }
            catch (Exception e)
            {
            }
          }
        }
      }).start();
    }
  }
}

そして、ここにHoverButtonの簡単なデモがあります:

import javax.swing.*;
import Java.awt.*;

public class Demonstration
{
  public Demonstration()
  {
    JFrame frame = new JFrame("Hover Button Demonstration");
    frame.setLayout(new GridBagLayout());
    frame.add(new HoverButton("Hover Button!!"));

    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

  public static void main(String args[])
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      @Override
      public void run()
      {
        new Demonstration();
      }
    });
  }
}

良い点は、コードを微調整して、ボタンの背景色も変更できることです。これもアニメーションで変更できます。

1
Aman Agnihotri

ワオ。古い質問ですが、知っています...

背景を変更するには、以下を使用します。

b1.setBackground(new Java.awt.Color(r, g, b));

actionListener内。

ロールオーバー効果には、次のものを使用できます。

b1.setRolloverEnabled(true);

ただし、ボタンを切り替えるには、アイコンを指定する必要があります。

それ以外の場合、他のホバー効果の場合、mouseListenerを使用する必要があります。

0
Kevin Donaldson