📄 colorpalette.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 + -