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

📄 colorpalette.java

📁 基于jxta的局域网P2P文件共享,可以实现局域网中的文件p2p共享,实现文件快速传输及交流
💻 JAVA
字号:
package connex.plugins.whiteboard;

import java.awt.Color;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.Dimension;
import java.awt.event.MouseMotionAdapter;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ColorPalette
    extends JComponent {
  private BufferedImage image;

  /**
   * @directed
   */
  private ColorListener listener;
  private int lastX, lastY;
  private int selectX, selectY;
  private int lastsX, lastsY;

  public ColorPalette() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public void setColorListener(ColorListener listener) {
    this.listener = listener;

  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);

    if (image == null) {
      initImage();

    }

    g.drawImage(image, 0, 0, this);

  }

  private void initImage() {
    image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = image.createGraphics();
    g2.setPaint(Color.CYAN);

    g2.fillRect(0, 0, getWidth(), getHeight());

    for (int j = 0; j < 9; j++) {
      for (int i = 0; i < 3; i++) {
        g2.setColor(new Color( (j % 3) * 127, (j / 3) * 127, i * 127));
        g2.fillRect(i * 15, j * 15, 15, 15);
      }
    }
    g2.setColor(Color.black);
    for (int i = 0; i <= 9; i++) {
      g2.drawLine(0, i * 15, 15 * 3, i * 15);
    }
    for (int i = 0; i <= 3; i++) {
      g2.drawLine(i * 15, 0, i * 15, 15 * 9);
    }
    g2.dispose();

  }

  private void jbInit() throws Exception {
    setPreferredSize(new Dimension( (15 * 3) + 1, (15 * 9) + 1));
    this.addMouseMotionListener(new MouseMotionAdapter() {
      public void mouseMoved(MouseEvent e) {
        this_mouseMoved(e);
      }
    });
    this.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        this_mouseClicked(e);
      }
    });

    this.addMouseListener(new MouseAdapter() {
      public void mouseExited(MouseEvent e) {
        this_mouseExited(e);
      }
    });

  }

  public void this_mouseClicked(MouseEvent e) {
    selectX = e.getX();
    selectY = e.getY();
    selectedCell(selectX, selectY);
    repaint();

    Color color = new Color(image.getRGB(15 * (selectX / 15) + 7, 15 * (selectY / 15) + 7));

    listener.colorChanged(color);

  }

  public void this_mouseMoved(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    selectedCell(selectX, selectY);
    overCell(x, y);
    //
  }

  private void overCell(int x, int y) {
    Graphics2D g2 = image.createGraphics();
    clearLastCell(g2, lastX, lastY);
    g2.setColor(Color.black);
    g2.drawRect(15 * (x / 15) + 2, 15 * (y / 15) + 2, 15 - 4, 15 - 4);

    lastX = x;
    lastY = y;

    repaint();

  }

  private void selectedCell(int x, int y) {
    Graphics2D g2 = image.createGraphics();
    clearLastCell(g2, lastsX, lastsY);
    g2.setXORMode(Color.black);
    g2.drawRect(15 * (x / 15) + 2, 15 * (y / 15) + 2, 15 - 4, 15 - 4);
    lastsX = x;
    lastsY = y;
  }

  private void clearLastCell(Graphics2D g2, int x, int y) {

    try {

      g2.setColor(new Color(image.getRGB(15 * (x / 15) + 7, 15 * (y / 15) + 7)));
      g2.drawRect(15 * (x / 15) + 2, 15 * (y / 15) + 2, 15 - 4, 15 - 4);
    }
    catch (Exception ex) {
    }

  }

  public void this_mouseExited(MouseEvent e) {
    initImage();
    selectedCell(selectX, selectY);
    repaint();
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -