//=====JAVA取色器 ColorDialog 使用例程的源程序=======
import java.awt.*;
import java.awt.event.*;
import java.applet.* ;
class SetObjectColor extends Applet
{
/*
public static void main(String args[])
{
new ColorObjectFrame();
}
*/
public void init()
{
new ColorObjectFrame();
}
}
class ColorObjectFrame extends Frame implements ActionListener, MouseListener
{
Button btnColor1=new Button(" 方式 1 ") ,
btnColor2=new Button(" 方式 2 "),
btnColor3=new Button(" 方式 2 ");
Label labColor =new Label (" 方式 2 ");
Canvas cavColor1=new Canvas( ),
cavColor2=new Canvas( ),
cavColor3=new Canvas( ),
cavColor4=new Canvas( );
Graphics offGraphics ;
ColorDialog ClrDilg1,ClrDilg2;
ColorObjectFrame()
{
move(300,150);
setTitle("颜色设置 方式2按右键弹出");
setName("ColorObjectFrame");
setSize(250,280);
setResizable(false);
setBackground(Color.gray.brighter());
setFont(new Font( "",Font.PLAIN ,18));
setLayout(new BorderLayout());
Panel p1=new Panel();
Panel p2=new Panel();
add("Center",p1);
add("South",p2);
p1.setLayout(new FlowLayout());
p1.add( btnColor1);
p1.add( btnColor2);
p1.add( btnColor3);
p1.add( labColor);
p2.setLayout(new GridLayout (2,2));
cavColor1.setSize(1,40);
p2.add( cavColor1); cavColor1.setBackground(Color.red);
p2.add( cavColor2);cavColor2.setBackground(Color.yellow);
p2.add( cavColor3);cavColor3.setBackground(Color.blue);
p2.add( cavColor4);cavColor4.setBackground(Color.green);
btnColor1.addActionListener(this);
//btnColor2.addActionListener(this);
btnColor2.addMouseListener(this);
btnColor3.addMouseListener(this);
cavColor1.addMouseListener(this);
cavColor2.addMouseListener(this);
cavColor3.addMouseListener(this);
cavColor4.addMouseListener(this);
addWindowListener( new CloseWin());
show()
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btnColor1)
{
// 方式1:不需要注册颜色对象,同VB中Windows的取色器用法相同.
// 参数 boolean isMolde 必需取 true.
if(ClrDilg1==null)
ClrDilg1=new ColorDialog(this,"颜色1 ",true);
ClrDilg1.setColor(btnColor1.getBackground());
ClrDilg1.show();
if(ClrDilg1.getColor()!=null)
btnColor1.setBackground(ClrDilg1.getColor());
//setColor与方式1 相配;
//使用,则在取色板显示该颜色的数值;也可不使用.
//getColor()与方式1 相配;
}
}
public void mousePressed(MouseEvent e)
{ //"按下
Object obj;
obj=e.getSource();
if(e.getModifiers()==MouseEvent.BUTTON1_MASK )
{ //"按下左键"
//repaint();
if(ClrDilg2!=null && ClrDilg2.isShowing())
{
if(obj.toString().indexOf("Button")>=0 || obj.toString().indexOf("Canvas")>=0)
{
ClrDilg2.setResizable(true);
ClrDilg2.setObject(obj,false);
//与方式2 相配.obj可以是具体的对象名如:cavColor1;
//true: 在取色板显示对象obj的原有颜色的数值;
//false: 不改变取色板中的原有取色.
}
}
}
if(e.getModifiers()==MouseEvent.BUTTON3_MASK)
{ // "按下右键";
if(obj.toString().indexOf("Button")>=0 ||
obj.toString().indexOf("Canvas")>=0)
{
// 方式2:需要注册颜色对象.参数 boolean isMolde 一般取 false
if(ClrDilg2==null)
ClrDilg2=new ColorDialog(this,"颜色2 ",false);
ClrDilg2.setObject(obj,true);
ClrDilg2.show();
//与方式2 相配.obj可以是具体的对象名如:cavColor1;
//true: 在取色板显示对象obj的原有颜色的数值;
//false: 不改变取色板中的原有取色.
}
}
}
public void mouseReleased(MouseEvent e){ } //"放开"
public void mouseEntered(MouseEvent e){ }//"进入";
public void mouseExited(MouseEvent e){ }//"退出";
public void mouseClicked(MouseEvent e){ }// if(e.getClickCount()==1) //"单击"
}
class CloseWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
if(e.toString().indexOf("Dialog")>=0 )
{
Dialog frm=(Dialog)(e.getSource());
frm.dispose();
}
if(e.toString().indexOf("Frame")>=0 )
{
Frame frm=(Frame)(e.getSource());
frm.dispose();
if(frm.getName().equals("ColorObjectFrame") )
System.exit(0);
}
}