import java.awt.*; import java.applet.*; public class ColorApplet extends Applet { GridBagLayout bag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); Scrollbar red; Scrollbar green; Scrollbar blue; Button svart; Button bla; Button vit; Button gron; Button gul; Button cyan; Button magenta; Button orange; Button rod; Button gray; Point bagPoint; TextField rgb; TextField rgb10; Color currentColor; Panel colorPanel; Label redLabel = new Label("R"); Label greenLabel = new Label("G"); Label blueLabel = new Label("B"); Label rgbLabel = new Label("RGB(hex)"); Label rgb10Label = new Label("RGB(10)"); public void init(){ bagPoint = bag.location(0,0); setLayout(bag); resize(300,250); red = new Scrollbar(Scrollbar.HORIZONTAL, 0xEE, 1, 0, 255); green = new Scrollbar(Scrollbar.HORIZONTAL, 0xDD, 1, 0, 255); blue = new Scrollbar(Scrollbar.HORIZONTAL, 0x82, 1, 0, 255); rgb = new TextField(7); rgb10 = new TextField(9); colorPanel = new Panel(); svart = new Button("Black"); vit = new Button("White"); gron = new Button("Green"); bla = new Button("Blue"); gul = new Button("Yellow"); cyan = new Button("Cyan"); magenta = new Button("Magenta"); orange = new Button("Orange"); rod = new Button("Red"); gray = new Button("Gray"); currentColor = new Color(0,0,0); c.anchor = GridBagConstraints.WEST; c.gridx = 0; c.gridy = 0; c.gridwidth = 4; c.fill = GridBagConstraints.HORIZONTAL; bag.setConstraints(red, c); add(red); c.gridwidth = 1; c.gridx = 4; c.gridy = 0; c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.VERTICAL; bag.setConstraints(redLabel, c); add(redLabel); c.anchor = GridBagConstraints.WEST; c.gridx = 0; c.gridy = 1; c.gridwidth = 4; c.fill = GridBagConstraints.HORIZONTAL; bag.setConstraints(green, c); add(green); c.gridwidth = 1; c.gridx = 4; c.gridy = 1; c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.VERTICAL; bag.setConstraints(greenLabel, c); add(greenLabel); c.anchor = GridBagConstraints.WEST; c.gridx = 0; c.gridy = 2; c.gridwidth = 4; c.fill = GridBagConstraints.HORIZONTAL; bag.setConstraints(blue, c); add(blue); c.gridwidth = 1; c.gridx = 4; c.gridy = 2; c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.VERTICAL; bag.setConstraints(blueLabel, c); add(blueLabel); c.gridwidth = 1; c.gridx = 1; c.gridy = 3; c.fill = GridBagConstraints.NONE; bag.setConstraints(rgb, c); add(rgb); c.gridwidth=1; c.gridx = 0; c.gridy = 3; c.anchor = GridBagConstraints.NORTHEAST; bag.setConstraints(rgbLabel, c); add(rgbLabel); c.anchor = GridBagConstraints.NORTHWEST; c.gridwidth = 2; c.gridx = 3; c.gridy = 3; bag.setConstraints(rgb10, c); add(rgb10); c.anchor = GridBagConstraints.NORTHEAST; c.gridwidth=1; c.gridx = 2; c.gridy = 3; bag.setConstraints(rgb10Label, c); add(rgb10Label); c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.BOTH; c.gridwidth = 5; c.gridx = 0; c.gridy = 4; c.ipady = 50; bag.setConstraints(colorPanel, c); add(colorPanel); c.fill = GridBagConstraints.HORIZONTAL; c.ipadx = 1; c.ipady = 1; c.gridwidth = 1; c.gridx = 0; c.gridy = 5; c.insets = new Insets(2, 2 , 2 , 2); bag.setConstraints(svart, c); add(svart); c.gridx = 1; c.gridy = 5; bag.setConstraints(bla, c); add(bla); c.gridx = 2; c.gridy = 5; bag.setConstraints(vit, c); add(vit); c.gridx = 3; c.gridy = 5; bag.setConstraints(gul, c); add(gul); c.gridx = 4; c.gridy = 5; bag.setConstraints(gron, c); add(gron); c.gridx = 0; c.gridy = 6; bag.setConstraints(cyan, c); add(cyan); c.gridx = 1; c.gridy = 6; bag.setConstraints(magenta, c); add(magenta); c.gridx = 2; c.gridy = 6; bag.setConstraints(orange, c); add(orange); c.gridx = 3; c.gridy = 6; bag.setConstraints(rod, c); add(rod); c.gridx = 4; c.gridy = 6; bag.setConstraints(gray, c); add(gray); } private String to3digitString( int i ) { return (i<100?"0":"")+(i<10?"0":"")+i; } private String rgbDeciString() { return to3digitString( red.getValue() ) +to3digitString( green.getValue() ) +to3digitString( blue.getValue() ); } private void setColor( int r, int g, int b ) { red.setValue( r ); green.setValue( g ); blue.setValue( b ); repaint(); } public void paint(Graphics g){ rgb10.setText( rgbDeciString() ); rgb.setText("#" + calculateHex(red.getValue()) + calculateHex(green.getValue()) + calculateHex(blue.getValue()) ); currentColor = new Color(red.getValue(), green.getValue(), blue.getValue()); Graphics panelGraphics = colorPanel.getGraphics(); panelGraphics.setColor(currentColor); panelGraphics.fillRect(0,0,350,100); colorPanel.paint(panelGraphics); } private String calculateHex(int x){ int sextontal; int ental; sextontal = x / 16; ental = x % 16; return makeHex(sextontal) + makeHex(ental); } private String makeHex(int tiobas){ if(tiobas == 10){ return "A"; } if(tiobas == 11){ return "B"; } if(tiobas == 12){ return "C"; } if(tiobas == 13){ return "D"; } if(tiobas == 14){ return "E"; } if(tiobas == 15){ return "F"; } else return Integer.toString(tiobas); } public boolean handleEvent(Event e){ if(e.target instanceof Scrollbar){ repaint(); } return super.handleEvent(e); } public boolean action(Event e, Object what) { if(e.target instanceof Button){ Button b = (Button)e.target; if(b == svart) { setColor( 0, 0, 0 ); return true; } if(b == bla) { setColor( 0, 0, 255 ); return true; } if(b == gron) { setColor( 0, 255, 0 ); return true; } if(b == gul) { setColor( 255, 255, 0 ); return true; } if(b == vit) { setColor( 255, 255, 255 ); return true; } if(b == cyan) { setColor( 0, 255, 255 ); return true; } if(b == magenta) { setColor( 255, 0, 255 ); return true; } if(b == rod) { setColor( 255, 0, 0 ); return true; } if(b == gray) { setColor( 127, 127, 127 ); return true; } if(b == orange) { setColor( 255, 180, 0 ); return true; } } else if (e.target instanceof TextField) { if ((TextField)e.target == rgb) { String s = (String)what; if (s.length()!=7 || s.charAt(0)!='#') { repaint(); return true; } else { s = s.substring(1,7); try { setColor( Integer.parseInt(s.substring(0,2),16), Integer.parseInt(s.substring(2,4),16), Integer.parseInt(s.substring(4,6),16) ); } catch (NumberFormatException err) { System.err.println(err); repaint(); return true; } } } else if ((TextField)e.target == rgb10) { String s = (String)what; if (s.length()!=9) { repaint(); return true; } else { try { setColor( Integer.parseInt(s.substring(0,3)), Integer.parseInt(s.substring(3,6)), Integer.parseInt(s.substring(6,9)) ); } catch (NumberFormatException err) { System.err.println(err); repaint(); return true; } } } } return super.action(e,what); } public void start(){ } }