colorchooser.java

来自「Typing fingers Typing programme」· Java 代码 · 共 80 行

JAVA
80
字号
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**	This class display a color box with a caption and allows the user to edit the color. */
class ColorChooser extends JPanel{
	private ColorButton button;
	private JPanel panel;
	ColorChooser(String cap,Color c){	
		setLayout(new GridLayout(0,2));
		add(new DialogLabel(cap),BorderLayout.WEST);
		add(button=new ColorButton(c),BorderLayout.EAST);
	}
	public void setColor(Color c){
		button.setColor(c);
	}
	public Color getColor(){
		return button.getColor();
	}
}
class ColorButton extends JPanel{
	TempPanel panel;
	ColorButton(Color c){
		super(new FlowLayout(FlowLayout.RIGHT));
		add(panel=new TempPanel(c));
	}
	public void setColor(Color c){
		panel.setColor(c);
	}
	public Color getColor(){
		return panel.getColor();
	}
}
class TempPanel extends JPanel{
	private Color c;
	private boolean flag=true;
	private JColorChooser jcc;
	private JPanel p;
	TempPanel(Color c){
		this.c=c;
		p=this;
		int height=20;
		setPreferredSize(new Dimension(height*3,height));
		setBorder(new BevelBorder(BevelBorder.RAISED));
		addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent m){
				setBorder(new BevelBorder(BevelBorder.LOWERED));
				repaint();
			}
			public void mouseReleased(MouseEvent m){
				setBorder(new BevelBorder(BevelBorder.RAISED));
				repaint();
			}
			public void mouseClicked(MouseEvent m){
				if(flag==false)
					return;
				flag=false; 
				Color color=jcc.showDialog(p,"Edit colors",
										getColor());
				if(color!=null)
					setColor(color);
				flag=true;
			}
		});
	}
	public void setColor(Color c){
		this.c=c;
		repaint();
	}
	public Color getColor(){
		return c;
	}
	public void paint(Graphics g){
		super.paint(g);
		g.setColor(c);
		int indent=getHeight()/5;
		g.fillRect(indent,indent,getWidth()-2*indent,getHeight()-2*indent);
	}
}

⌨️ 快捷键说明

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