Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencipta Butang Berkelip dengan Warna Bertukar dalam Java Swing?

Bagaimanakah Saya Boleh Mencipta Butang Berkelip dengan Warna Bertukar dalam Java Swing?

DDD
DDDasal
2024-12-03 08:17:13725semak imbas

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

Butang Berkelip dalam Java

Dalam Java Swing, menukar rupa butang boleh menunjukkan keadaan yang berbeza, seperti apabila status pangkalan data berubah . Artikel ini membincangkan cara mengubah suai warna butang dan menambah kesan berkelip untuk menyerlahkan status tertentu.

Menukar Warna Butang

Untuk menukar warna butang, anda boleh menggunakan kaedah setForeground() untuk mengubah warna teks. Kaedah setBackground() yang sepadan mempengaruhi warna latar belakang tetapi mungkin tidak kelihatan pada semua platform. Alternatifnya ialah menggunakan JPanel berwarna sebagai latar belakang butang.

Menambah Kesan Berkelip

Untuk mencipta kesan berkelip, objek Pemasa boleh digunakan. Pemasa berulang kali memanggil kaedah actionPerformed(), membolehkan anda menukar warna butang secara berkala. Dengan menetapkan selang Pemasa kepada tempoh yang singkat, cth., 100 milisaat, anda mencapai kesan berkelip.

Contoh Kod

Coretan kod berikut menunjukkan cara mencipta butang berkelip yang bertukar warna setiap saat:

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();
            }
        });
    }
}

Kod ini menjana grid butang, masing-masing dengan warna yang dipilih secara rawak. Pemasa menggunakan kaedah actionPerformed() setiap saat, yang mengemas kini warna semua butang kepada warna rawak yang lain, mencipta kesan berkelip berterusan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Butang Berkelip dengan Warna Bertukar dalam Java Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn