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

📄 colorpanel.java

📁 用java编写的画图面板程序(有源代码)
💻 JAVA
字号:
/**
 * @(#)ColorPanel.java
 */
package project.paint;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ColorPanel extends JToolBar implements MouseListener {
	private Project instance;

	ColorShowPanel csPanel;
	ColorButton[] coBtns=new ColorButton[28];
	int[] rColors={0x00,0x46,0x78,0x99,0xED,0xFF,0xFF,0xFF,0xA8,0x22,0x60,0x4D,0x2F,0x6F,
				   0xFF,0xDC,0xB4,0x9C,0xFF,0xE5,0xF5,0xFF,0x03,0x9D,0x95,0x70,0x54,0xB5};
	int[] gColors={0x00,0x46,0x78,0x00,0x1C,0x7E,0xC2,0xF2,0xE6,0xB1,0xB7,0x60,0x36,0x31,
				   0xFF,0xDC,0xB4,0x5A,0xA3,0xAA,0xE4,0xF9,0xF9,0xBB,0xD9,0x9A,0x6D,0xA5};
	int[] bColors={0x00,0x46,0x78,0x30,0x24,0x00,0x0E,0x00,0x1D,0x4C,0xEF,0xF3,0x99,0x98,
				   0xFF,0xDC,0xB4,0x3C,0xB1,0x7A,0x9C,0xBD,0xBC,0x61,0xEA,0xD1,0x8E,0xD5};
	
	public ColorPanel(Project o) {
		if (o==null)
			return;
		instance=o;
		
		JPanel pnColor=new JPanel(null);

		csPanel=new ColorShowPanel();
		csPanel.setBounds(0,1,30,31);
		pnColor.add(csPanel);
		
		for (int i=0; i<28; i++) {
			Color c=new Color(rColors[i],gColors[i],bColors[i]);
			coBtns[i]=new ColorButton(c);
			int x=31+16*((i<14)?i:(i-14));
			int y=1+16*(i/14);
			coBtns[i].setBounds(x,y,15,15);
			coBtns[i].addMouseListener(this);
			pnColor.add(coBtns[i]);
		}
		
		add(pnColor);
		pnColor.setPreferredSize(new Dimension(280,36));
		setBackground(Project.GRAYCOLOR);
	}

	public void mouseClicked(MouseEvent e) {
		Object o=e.getSource();
		if (o instanceof ColorButton) {
			ColorButton btn=(ColorButton)o;
			if (e.getClickCount()==2) {
				Color color=JColorChooser.showDialog(instance.f,"编辑颜色",btn.color);
				if (color==null)
					return;
				btn.setColor(color);
				instance.paintPanel.forColor=color;
				csPanel.setForwordColor(color);
			}
			else {
				if (e.getButton()==e.BUTTON1) {		//左键
					if ((e.getModifiersEx() & e.CTRL_DOWN_MASK) == e.CTRL_DOWN_MASK) {		//按住Ctrl键
						instance.paintPanel.midColor=btn.color;
						csPanel.setMiddleColor(btn.color);
					}
					else {
						instance.paintPanel.forColor=btn.color;
						csPanel.setForwordColor(btn.color);
					}
				}
				else if (e.getButton()==e.BUTTON3) {	//右键
					instance.paintPanel.bacColor=btn.color;
					csPanel.setBackColor(btn.color);
				}
				//csPanel.repaint();
			}
			int r=btn.color.getRed();
			int g=btn.color.getGreen();
			int b=btn.color.getBlue();
			instance.setState("已应用颜色: RGB("+String.valueOf(r)+","+String.valueOf(g)+","+String.valueOf(b)+")");

			instance.toolPanel.paintModePanel.changeColor(csPanel.f_color,csPanel.b_color);
		}
	}

	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}


	private class ColorShowPanel extends JPanel {
		Color f_color,b_color,m_color;
	
		ColorShowPanel() {
			m_color=Color.WHITE;
			f_color=Color.BLACK;
			b_color=Color.WHITE;
			
			setPreferredSize(new Dimension(30,30));
		}
		
		void setForwordColor(Color c) {
			f_color=c;
			paint(getGraphics());
		}
		void setBackColor(Color c) {
			b_color=c;
			paint(getGraphics());
		}
		void setMiddleColor(Color c) {
			m_color=c;
			paint(getGraphics());
		}
		
		public void paint(Graphics g) {
			//g.clearRect(0,0,getWidth(),getHeight());
			int w=getWidth();
			int h=getHeight();
			g.setColor(Color.GRAY);
			g.drawLine(0,0,0,h);
			g.drawLine(0,0,w,0);
			g.setColor(new Color(230,230,230));
			g.drawRect(1,1,w-2,h-2);
			g.setColor(m_color);
			g.fillRect(2,2,w-3,h-3);
			
			drawButton(b_color,g,11,12,15,15);
			drawButton(f_color,g,5,5,15,15);
		}
	
		private void drawButton(Color color,Graphics g,int x,int y,int width,int height) {
			g.setColor(new Color(230,230,230));
			g.drawRect(x+1,y+1,width-3,height-3);
			g.setColor(Color.GRAY);
			g.drawLine(x+1,y+height-1,x+width-1,y+height-1);
			g.drawLine(x+width-1,y+1,x+width-1,y+height-1);
			g.setColor(color);
			g.fillRect(x+2,y+2,width-4,height-4);
		}
	}
	
	private class ColorButton extends JPanel {
		Color color;
		
		ColorButton(Color c) {
			setColor(c);
			setSize(15,15);
		}
		void setColor(Color c) {
			color=c;
			//repaint();
			paint(getGraphics());
		}
		public void paint(Graphics g) {
			//g.clearRect(0,0,getWidth(),getHeight());
			if (g==null) return;
			int width=getWidth();
			int height=getHeight();
			
			g.setColor(Color.GRAY);
			g.drawLine(0,0,0,height);
			g.drawLine(0,0,width,0);
			g.setColor(new Color(230,230,230));
			g.drawRect(1,1,width-2,height-2);
			g.setColor(color);
			g.fillRect(2,2,width-3,height-3);
		}
	}
}

⌨️ 快捷键说明

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