Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Swing JButton 롤오버 효과 구현 방법 – MouseListener로 마우스 오버 이벤트 처리하기

JButtonAbstractButton의 하위 클래스로, GUI 애플리케이션에 플랫폼에 독립적인 버튼을 손쉽게 추가할 수 있도록 해주는 스윙(Swing) 컴포넌트입니다. JButton은 버튼이 눌리거나 클릭되는 순간 ActionListener 인터페이스를 통해 이벤트를 발생시키며, 그 외에도 MouseListenerKeyListener 인터페이스를 함께 지원합니다.

버튼 위로 마우스 커서가 진입했을 때 롤오버(rollover) 효과를 구현하려면 MouseListener 인터페이스의 mouseEntered() 메서드를 재정의하면 됩니다. 이 메서드는 마우스가 컴포넌트 영역 안으로 들어오는 순간 자동으로 호출되기 때문에, 여기서 버튼의 전경색을 변경해 주면 간단하게 마우스 오버 효과를 만들 수 있습니다. 반대로 마우스가 버튼을 벗어날 때는 mouseExited() 메서드가 호출되므로, 이곳에서 원래 색상으로 되돌려 주면 자연스러운 롤오버 효과가 완성됩니다.

구문(Syntax)

void mouseEntered(MouseEvent e)

예제 코드(Example)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class RollOverButtonTest extends JFrame {
   private JButton button;

   public RollOverButtonTest() {
      setTitle("RollOverButton Test");
      button = new JButton("Rollover Button");

      button.addMouseListener(new MouseAdapter() {
         Color color = button.getForeground();

         public void mouseEntered(MouseEvent me) {
            color = button.getForeground();
            button.setForeground(Color.green); // 마우스가 버튼 위에 있을 때 글자색을 초록색으로 변경
         }

         public void mouseExited(MouseEvent me) {
            button.setForeground(color); // 마우스가 벗어나면 원래 색상으로 복원
         }
      });

      add(button, BorderLayout.NORTH);
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }

   public static void main(String[] args) {
      new RollOverButtonTest();
   }
}

코드 설명

  • MouseAdapter 사용: MouseListener 인터페이스의 모든 메서드를 구현할 필요 없이, 필요한 mouseEntered()와 mouseExited() 두 메서드만 재정의할 수 있습니다.
  • mouseEntered(): 마우스가 버튼 위로 진입하는 순간 호출되며, setForeground(Color.green)를 통해 버튼 글자색을 초록색으로 변경합니다.
  • mouseExited(): 마우스가 버튼에서 벗어나는 순간 호출되며, 미리 저장해 둔 기본 전경색(color)으로 되돌려 줍니다.
  • 익명 내부 클래스: 리스너를 익명 클래스로 선언하면 코드가 간결해지고, 버튼 객체에 이벤트 처리 로직을 한 곳에 모아 관리할 수 있습니다.

실행 결과(Output)

프로그램을 실행하고 마우스를 버튼 위로 올리면 버튼의 글자색이 초록색으로 바뀌고, 마우스를 치우면 다시 원래 색상으로 돌아오는 것을 확인할 수 있습니다.

Java Swing JButton 롤오버 효과 구현 방법 – MouseListener로 마우스 오버 이벤트 처리하기