⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minicolorchooser.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch09.section07;

import javax.microedition.lcdui.*;

//该类实现一个简单的颜色选择器
public class MiniColorChooser
    extends Canvas {
  //当前颜色
  int rgbColor;

  //当前索引
  int ndx = 0;

  //为每个单独颜色创建一个MiniColorChooser类实例
  public MiniColorChooser() {
    setColor(0xffff00);
  }

  //用指定RGB设置当前颜色
  public void setColor(int RGB) {
    rgbColor = RGB & 0x00ffffff;
  }

  //获取当前颜色
  public int getColor() {
    return rgbColor;
  }

  //面板宽度
  static final int BORDER = 2;

  //面板高度
  static final int BAR_H = 14;

  //使用当前颜色绘制画板
  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;

    //填充背景色
    g.setColor(0x000000);
    g.fillRect(0, 0, w, h);

    //填充颜色示例
    g.setColor(rgbColor);
    g.fillRect(BORDER, sample_y, sample_w, sample_h);

    //绘制三色彩条
    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);
    }

  }

  public void keyRepeated(int key) {
    keyPressed(key);
  }

  //点击左右方向键改变颜色取值
  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;
    }

    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 + -