Java Swing, Membaca Kode Warna Heksadesimal

HexColors

Bagi Anda yang pernah bermain dengan grafik digital, misalnya Web Design, pasti pernah melihat kode warna dalam format misalnya #FFFFFF bukan? Format tersebut adalah representasi warna dalam bilangan Heksadesimal, yang mana terdiri dari 6 digit (di CSS, dapat hanya menggunakan 3 digit) , dengan mencakup 3 Warna Dasar, yaitu Red, Green, dan Blue.

Masing masing warna tersebut direpresentasikan oleh 2 digit bilangan heksadesimal, yang berarti nilai tertinggi dari bilang tersebut adalah FF atau 255, kunjungi tautan berikut untuk proses konversinya.

Dalam post kali ini, Saya ingin memberikan contoh implementasi kode warna Heksadesimal tersebut dalam bahasa pemrograman Java, khususnya dengan menggunakan komponen Swing. Class yang dapat digunakan adalah java.awt.Color. Yang mana, class tersebut dapat di-construct dengan parameter integer, yang mana dapat merupakan representasi nilai bilangan dari huruf heksadesimal.

Sedangkan untuk mengkonversi String Heksadesimal menjadi integer, dapat menggunakan fungsi bawaan Integer.parseInt(String, int Radix), dimana radix disini adalah nilai basis bilangan, dalam hal heksadesimal ini, adalah 16. Iya, heksadesimal adalah bilangan berbasis 16.

Proses konversi String Heksadesimal menjadi integer, dapat dilakukan, misalnya dengan kode berikut

1
2
3
4
5
6
7
8
9
Static Color parseColor(String hex){
    try {
        int hexValue = Integer.parseInt(hex, 16);
        return new Color(hexValue);
    } catch (Exception e){
        e.printStackTrace();
        return null;
    }
}

Dan berikut saya berikan contoh kode untuk diaplikasikan dalam aplikasi Java, tentu saja, kode berikut hanya mendemonstrasikan bagaimana proses konversi dan penggunaan Color tersebut. Berbagai error handling mungkin harus diterapkan dalam aplikasi sebenarnya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.kurungkurawal.spo;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
/**
 * Created by konglie on 3/7/16.
 */
public class HexColors extends JFrame {
    public static void main(String[] args){
        new HexColors();
    }
 
    JPanel body, headerPanel, colorPanel;
    JTextField inputColor;
    JButton btnProcess;
    public HexColors(){
        setTitle("Contoh Warna dari String Heksadesimal");
        setResizable(false);
        setPreferredSize(new Dimension(640, 480));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        body = new JPanel(new BorderLayout());
 
        inputColor = new JTextField("DD3333");
        btnProcess = new JButton("Proses");
        btnProcess.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                processInput();
            }
        });
 
        headerPanel = new JPanel(new BorderLayout());
        headerPanel.setBorder(BorderFactory.createEmptyBorder(5,15,5,15));
        headerPanel.add(new JLabel("Kode Warna Heksadesimal, 6 Digit"), BorderLayout.WEST);
        headerPanel.add(inputColor, BorderLayout.CENTER);
        headerPanel.add(btnProcess, BorderLayout.EAST);
        body.add(headerPanel, BorderLayout.NORTH);
 
        colorPanel = new JPanel();
        colorPanel.setOpaque(true);
        body.add(colorPanel, BorderLayout.CENTER);
 
        getContentPane().add(body, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
 
        processInput();
    }
 
    void processInput(){
        final Color color = parseColor();
        if(color == null){
            JOptionPane.showMessageDialog(null, "Gagal membaca kode warna");
        } else {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    colorPanel.setBackground(color);
                }
            });
        }
    }
 
    Color parseColor(){
        try {
            String hex = inputColor.getText();
            if(hex.startsWith("#")){
                hex = hex.replaceAll("^#", "");
            }
            int hexValue = Integer.parseInt(hex, 16);
 
            return new Color(hexValue);
        } catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

Demikian, semoga berguna untuk kita semua.