📄 minicolorchooser.java
字号:
/* * @(#)MiniColorChooser.java 1.2 03/01/22 * * Copyright (c) 2000-2003 Sun Microsystems, Inc. All rights reserved. * PROPRIETARY/CONFIDENTIAL * Use is subject to license terms */package example.chooser;import javax.microedition.lcdui.*;/** * A Color chooser. This screen can be used to display and * choose colors. The current color is always available * via the getColor methods. It can be set with setColor. */public class MiniColorChooser extends Canvas { /** current color */ int rgbColor; /** current index */ int ndx = 0; /** * Create a new MiniColorChooser for a single color. */ public MiniColorChooser() { setColor(0xffff00); } /** * Sets the current color to the specified RGB values. All subsequent * rendering operations will use this specified color. The RGB value * passed in is interpreted with the least significant eight bits * giving the blue component, the next eight more significant bits * giving the green component, and the next eight more significant * bits giving the red component. That is to say, the color component * is specified like 0x00RRGGBB. * @param RGB The color being set. */ public void setColor(int RGB) { rgbColor = RGB & 0x00ffffff; } /** * Gets the current color. * @return an integer in form 0x00RRGGBB * @see #setColor */ public int getColor() { return rgbColor; } /** Border width */ static final int BORDER = 2; /** Color bar height */ static final int BAR_H = 14; /** * Paint the canvas with the current color and controls to change it. * @param g the graphics context to draw to the screen. */ protected void paint(Graphics g) { int w = getWidth(); int h = getHeight(); int sample_w = w - 1; int sample_h = h - (BAR_H + BORDER) * 3; int sample_y = BORDER; int b_y = sample_y + sample_h + BORDER*2; int g_y = b_y + BAR_H; int r_y = g_y + BAR_H; // Fill the background g.setColor(0x000000); g.fillRect(0, 0, w, h); // Fill in the color sample g.setColor(rgbColor); g.fillRect(BORDER, sample_y, sample_w, sample_h); // Draw the colorbars int blue = (rgbColor >> 0) & 0xff; g.setColor(0, 0, 255); g.fillRect(20, b_y, blue / 4, 10); int green = (rgbColor >> 8) & 0xff; g.setColor(0, 255, 0); g.fillRect(20, g_y, green / 4, 10); int red = (rgbColor >> 16) & 0xff; g.setColor(255, 0, 0); g.fillRect(20, r_y, red / 4, 10); g.setColor(255, 255, 255); g.drawString(Integer.toString(blue), 18, b_y-3, Graphics.RIGHT|Graphics.TOP); g.drawString(Integer.toString(green), 18, g_y-3, Graphics.RIGHT|Graphics.TOP); g.drawString(Integer.toString(red), 18, r_y-3, Graphics.RIGHT|Graphics.TOP); if (ndx >= 0) { int y = b_y + ndx * BAR_H; g.drawRect(20, y, 63, 10); } } /** * Handle repeat as in pressed. * @param key was pressed */ public void keyRepeated(int key) { keyPressed(key); } /** * Left and Right are used to change which color bar to change * Up and Down are used to increase/decrease the value of that bar. * @param key was pressed */ protected void keyPressed(int key) { int action = getGameAction(key); int dir = 0; switch (action) { case RIGHT: dir += 1; break; case LEFT: dir -= 1; break; case UP: ndx -= 1; break; case DOWN: ndx += 1; break; default: return; // nothing we recognize, exit } // Limit selection to r,g,b and palette if (ndx < 0) ndx = 0; if (ndx > 2) ndx = 2; if (ndx >= 0) { int v = (rgbColor >> (ndx*8)) & 0xff; v += dir * 0x20; if (v < 0) v = 0; if (v > 255) v = 255; int mask = 0xff << (ndx*8); rgbColor = (rgbColor & ~mask) | v << (ndx*8); } repaint(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -