7

RGBViewer

  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. import javax.swing.*;
  5. import javax.swing.event.*;
  6.  
  7. public class RGBViewer extends JFrame implements ChangeListener, ActionListener {
  8.     JTextField rv, gv, bv;
  9.  
  10.     JSlider rs, gs, bs;
  11.  
  12.     ColoredArea color;
  13.  
  14.     RGBViewer(String title) {
  15.         super(title);
  16.  
  17.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18.  
  19.         JLabel r = new JLabel();
  20.         r.setBackground(Color.RED);
  21.         r.setOpaque(true);
  22.         JLabel g = new JLabel();
  23.         g.setBackground(Color.GREEN);
  24.         g.setOpaque(true);
  25.         JLabel b = new JLabel();
  26.         b.setBackground(Color.BLUE);
  27.         b.setOpaque(true);
  28.  
  29.         rv = new JTextField("0", 3);
  30.         gv = new JTextField("0", 3);
  31.         bv = new JTextField("0", 3);
  32.         rv.setFont(new Font("Monospaced", Font.BOLD, 14));
  33.         gv.setFont(new Font("Monospaced", Font.BOLD, 14));
  34.         bv.setFont(new Font("Monospaced", Font.BOLD, 14));
  35.         rv.addActionListener(this);
  36.         gv.addActionListener(this);
  37.         bv.addActionListener(this);
  38.  
  39.         color = new ColoredArea(0, 0, 0);
  40.  
  41.         rs = new JSlider(0, 255, 0);
  42.         gs = new JSlider(0, 255, 0);
  43.         bs = new JSlider(0, 255, 0);
  44.  
  45.         rs.addChangeListener(this);
  46.         gs.addChangeListener(this);
  47.         bs.addChangeListener(this);
  48.  
  49.         setLayout(new GridBagLayout());
  50.         GridBagConstraints c = new GridBagConstraints();
  51.  
  52.         c.ipadx = 10;
  53.         c.ipady = 5;
  54.         c.fill = GridBagConstraints.BOTH;
  55.         c.insets = new Insets(5, 5, 5, 5);
  56.  
  57.         c.gridx = 0;
  58.         c.gridy = 0;
  59.         add(r, c);
  60.         c.gridy = 1;
  61.         add(g, c);
  62.         c.gridy = 2;
  63.         add(b, c);
  64.  
  65.         c.gridx = 1;
  66.         c.gridy = 0;
  67.         add(rv, c);
  68.         c.gridy = 1;
  69.         add(gv, c);
  70.         c.gridy = 2;
  71.         add(bv, c);
  72.  
  73.         c.gridx = 2;
  74.         c.gridy = 0;
  75.         add(rs, c);
  76.         c.gridy = 1;
  77.         add(gs, c);
  78.         c.gridy = 2;
  79.         add(bs, c);
  80.  
  81.         c.gridx = 3;
  82.         c.gridy = 0;
  83.         c.gridheight = GridBagConstraints.REMAINDER;
  84.         c.fill = GridBagConstraints.BOTH;
  85.         add(color, c);
  86.  
  87.         pack();
  88.  
  89.         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  90.  
  91.         int width = getSize().width;
  92.         int height = getSize().height;
  93.         int x = (screenSize.width - width) / 2;
  94.         int y = (screenSize.height - height) / 3;
  95.  
  96.         setLocation(x, y);
  97.         setResizable(false);
  98.  
  99.         setVisible(true);
  100.     }
  101.  
  102.     public void stateChanged(ChangeEvent e) {
  103.         int value;
  104.  
  105.         if (e.getSource() == rs) {
  106.             value = (Integer) rs.getValue();
  107.             rv.setText(Integer.toString(value));
  108.             color.setRed(value);
  109.             color.repaint();
  110.         }
  111.         else if (e.getSource() == gs) {
  112.             value = (Integer) gs.getValue();
  113.             gv.setText(Integer.toString(value));
  114.             color.setGreen(value);
  115.             color.repaint();
  116.         }
  117.         else if (e.getSource() == bs) {
  118.             value = (Integer) bs.getValue();
  119.             bv.setText(Integer.toString(value));
  120.             color.setBlue((Integer) bs.getValue());
  121.             color.repaint();
  122.         }
  123.     }
  124.  
  125.     public void actionPerformed(ActionEvent e) {
  126.         try {
  127.             if (e.getSource() == rv)
  128.                 rs.setValue(Integer.parseInt(rv.getText()));
  129.             if (e.getSource() == gv)
  130.                 gs.setValue(Integer.parseInt(gv.getText()));
  131.             if (e.getSource() == bv)
  132.                 bs.setValue(Integer.parseInt(bv.getText()));
  133.         }
  134.         catch (NumberFormatException ex) {
  135.         }
  136.     }
  137.  
  138.     private static void createAndShowGUI() {
  139.         JFrame.setDefaultLookAndFeelDecorated(false);
  140.  
  141.         new RGBViewer("RGB");
  142.     }
  143.  
  144.     public static void main(String[] args) {
  145.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  146.             public void run() {
  147.                 createAndShowGUI();
  148.             }
  149.         });
  150.     }
  151.  
  152.     private class ColoredArea extends JLabel {
  153.         int r = 0, g = 0, b = 0;
  154.  
  155.         ColoredArea(int r, int g, int b) {
  156.             setColor(r, g, b);
  157.             setOpaque(true);
  158.         }
  159.  
  160.         public void setColor(int r, int g, int b) {
  161.             this.r = r;
  162.             this.g = g;
  163.             this.b = b;
  164.  
  165.             setBackground(new Color(r, g, b));
  166.         }
  167.  
  168.         public void setRed(int r) {
  169.             setColor(r, this.g, this.b);
  170.         }
  171.  
  172.         public void setGreen(int g) {
  173.             setColor(this.r, g, this.b);
  174.         }
  175.  
  176.         public void setBlue(int b) {
  177.             setColor(this.r, this.g, b);
  178.         }
  179.     }
  180. }
$ javac RGBViewer.java
$ java RGBViewer

Comments

Your comment:
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip help 2000

Enter a maximum of 2000 characters.
Improve the presentation of your text with the following formatting tags:
[p]paragraph[/p], [b]bold[/b], [i]italics[/i], [u]underline[/u], [s]strike[/s], [quote]citation[/quote], [pre]as is[/pre], [br]line break,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]command[/code], [code=language]source code in c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].