>Java >java지도 시간 >Java Swing에서 색상 변경으로 깜박이는 버튼을 어떻게 만들 수 있습니까?

Java Swing에서 색상 변경으로 깜박이는 버튼을 어떻게 만들 수 있습니까?

DDD
DDD원래의
2024-12-03 08:17:13683검색

How Can I Create Flashing Buttons with Changing Colors in Java Swing?

Java의 깜박이는 버튼

Java Swing에서 버튼의 모양을 변경하면 데이터베이스 상태가 변경되는 경우와 같은 다양한 상태를 나타낼 수 있습니다. . 이 글에서는 버튼 색상을 수정하고 깜박이는 효과를 추가하여 특정 상태를 강조하는 방법을 다룹니다.

버튼 색상 변경

버튼 색상을 변경하려면 다음을 사용할 수 있습니다. setForeground() 메서드를 사용하여 텍스트 색상을 변경합니다. 해당 setBackground() 메서드는 배경색에 영향을 주지만 일부 플랫폼에서는 표시되지 않을 수 있습니다. 대안은 컬러 JPanel을 버튼의 배경으로 사용하는 것입니다.

깜박이는 효과 추가

깜박이는 효과를 만들기 위해 Timer 개체를 활용할 수 있습니다. Timer는 actionPerformed() 메서드를 반복적으로 호출하여 버튼 색상을 주기적으로 변경할 수 있습니다. 타이머 간격을 짧은 기간(예: 100밀리초)으로 설정하면 깜박이는 효과를 얻을 수 있습니다.

코드 예

다음 코드 조각은 타이머 간격을 만드는 방법을 보여줍니다. 매초마다 색상이 바뀌는 깜박이는 버튼:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class ButtonTest extends JPanel implements ActionListener {

    private static final int N = 4;
    private static final Random rnd = new Random();
    private final Timer timer = new Timer(1000, this);
    private final List<ButtonPanel> panels = new ArrayList<ButtonPanel>();

    public ButtonTest() {
        this.setLayout(new GridLayout(N, N, N, N));
        for (int i = 0; i < N * N; i++) {
            ButtonPanel bp = new ButtonPanel(i);
            panels.add(bp);
            this.add(bp);
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        for (JPanel p : panels) {
            p.setBackground(new Color(rnd.nextInt()));
        }
    }

    private static class ButtonPanel extends JPanel {

        public ButtonPanel(int i) {
            this.setBackground(new Color(rnd.nextInt()));
            this.add(new JButton("Button " + String.valueOf(i)));
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame f = new JFrame("ButtonTest");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                ButtonTest bt = new ButtonTest();
                f.add(bt);
                f.pack();
                f.setLocationRelativeTo(null);
                f.setVisible(true);
                bt.timer.start();
            }
        });
    }
}

이 코드는 다음과 같은 그리드를 생성합니다. 버튼은 각각 무작위로 선택된 색상으로 구성되어 있습니다. 타이머는 매초 actionPerformed() 메서드를 호출하여 모든 버튼의 색상을 다른 임의 색상으로 업데이트하여 지속적으로 깜박이는 효과를 만듭니다.

위 내용은 Java Swing에서 색상 변경으로 깜박이는 버튼을 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.