Warna teks tersusun atas warna merah (red), hijau (green) dan biru (blue) atau lebih dikenal dengan RGB. Anda dapat menggunakan knob yang terdapat di obyek slider untuk menentukan ukuran dan warna teks.
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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | // Nama kelas : DemoJSlider.java // Mendemonstrasikan penggunaan kelas JSlider // Mengimpor kelas import java.awt.*; import java.util.Hashtable; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; // Deklarasi kelas public class DemoJSlider extends JFrame { JLabel label = new JLabel("Belajar Java", JLabel.CENTER); JSlider sldSize = new JSlider(SwingConstants.VERTICAL, 10, 50, 35); JSlider sldRed = new JSlider(0, 250, 0); JSlider sldGreen = new JSlider(0, 250, 0); JSlider sldBlue = new JSlider(0, 250, 0); int sizeValue, redValue, greenValue, blueValue; // Konstruktor DemoJSlider public DemoJSlider() { sizeValue = sldSize.getValue(); redValue = sldRed.getValue(); greenValue = sldGreen.getValue(); blueValue = sldBlue.getValue(); // Mengatur ukuran dan warna sesuai nilai obyek slider awal label.setFont(new Font("Tahoma", Font.PLAIN + Font.BOLD, sizeValue)); label.setForeground(new Color(redValue, greenValue, blueValue)); // Mengatur obyek sldSize (JSlider) Hashtable<Integer, JLabel> tbl1 = new Hashtable<Integer, JLabel> (); tbl1.put(10, new JLabel("10")); tbl1.put(20, new JLabel("20")); tbl1.put(30, new JLabel("30")); tbl1.put(40, new JLabel("40")); tbl1.put(50, new JLabel("50")); sldSize.setPaintLabels(true); sldSize.setLabelTable(tbl1); sldSize.setMinorTickSpacing(5); sldSize.setMajorTickSpacing(10); sldSize.setPaintTicks(true); sldSize.setBorder(new TitledBorder("Size")); JPanel panelLabel = new JPanel(); panelLabel.setLayout(new BorderLayout()); panelLabel.add(label, BorderLayout.CENTER); panelLabel.add(sldSize, BorderLayout.LINE_END); // Mengatur obyek sldRed, sldGreen dan sldBlue (JSlider) Hashtable<Integer, JLabel> tbl2 = new Hashtable<Integer, JLabel> (); tbl2.put(0, new JLabel("0")); tbl2.put(50, new JLabel("50")); tbl2.put(100, new JLabel("100")); tbl2.put(150, new JLabel("150")); tbl2.put(200, new JLabel("200")); tbl2.put(250, new JLabel("250")); sldRed.setPaintLabels(true); sldRed.setLabelTable(tbl2); sldRed.setMinorTickSpacing(10); sldRed.setMajorTickSpacing(50); sldRed.setPaintTicks(true); sldGreen.setPaintLabels(true); sldGreen.setLabelTable(tbl2); sldGreen.setMinorTickSpacing(10); sldGreen.setMajorTickSpacing(50); sldGreen.setPaintTicks(true); sldBlue.setPaintLabels(true); sldBlue.setLabelTable(tbl2); sldBlue.setMinorTickSpacing(10); sldBlue.setMajorTickSpacing(50); sldBlue.setPaintTicks(true); JPanel panelSliderRGB = new JPanel(); panelSliderRGB.setLayout(new GridLayout(3, 1, 2, 1)); panelSliderRGB.add(sldRed); panelSliderRGB.add(sldGreen); panelSliderRGB.add(sldBlue); JPanel panelLabelRGB = new JPanel(); panelLabelRGB.setLayout(new GridLayout(3, 1, 2, 1)); panelLabelRGB.add(new JLabel("RED")); panelLabelRGB.add(new JLabel("GREEN")); panelLabelRGB.add(new JLabel("BLUE")); JPanel panelRGB = new JPanel(); panelRGB.setLayout(new BorderLayout(3, 3)); panelRGB.add(panelLabelRGB, BorderLayout.LINE_START); panelRGB.add(panelSliderRGB, BorderLayout.CENTER); panelRGB.setBorder(new TitledBorder("RGB Color")); getContentPane().setLayout(new BorderLayout(0, 1)); getContentPane().add(panelLabel, BorderLayout.CENTER); getContentPane().add(panelRGB, BorderLayout.PAGE_END); // Penanganan event pada obyek slider sldSize.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent ce) { sizeValue = sldSize.getValue(); label.setFont(new Font("Tahoma", Font.PLAIN + Font.BOLD, sizeValue)); } } ); sldRed.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent ce) { redValue = sldRed.getValue(); label.setForeground(new Color(redValue, greenValue, blueValue)); } } ); sldGreen.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent ce) { greenValue = sldGreen.getValue(); label.setForeground(new Color(redValue, greenValue, blueValue)); } } ); sldBlue.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent ce) { blueValue = sldBlue.getValue(); label.setForeground(new Color(redValue, greenValue, blueValue)); } } ); } // Metoda main public static void main(String[] args) { DemoJSlider frame = new DemoJSlider(); frame.setTitle("Kelas DemoJSlider"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(415, 330); frame.setVisible(true); } } |
Baris nomor 103 – 110 adalah pernyataan yang dieksekusi ketika nilai obyek slider vertikal (sldSize) diubah melalui penggeseran knob. Event obyek ini digunakan untuk mengubah ukuran teks dengan rentang nilai antara 10 – 50. Saat knob digeser, ukuran teks akan langsung berubah untuk menyesuaikan nilai obyek sldSize saat ini.
Untuk mengubah warna teks, Anda menggunakan tiga obyek slider horisantal yang dikelompokkan di titled border RGB Color. Anda dapat mengubah warna teks dengan menggeser knob dari obyek slider tersebut (sldRed, sldGreen dan sldBlue). Setiap obyek slider mempunyai rentang nilai 0 – 250 (rentang nilai warna RGB adalah 0 – 255). Warna teks adalah kombinasi dari tiga warna red, green dan blue.