//颜色盒的定义
class Colorbox extends JPanel{
private Hashtable hTable;
private Color[] colorArray;
private Color displayColor;
private JPanel paneBox ;
private Border selectedBorder;
private Border unSelectedBorder;
private Border activeSelectedB;
public Colorbox ()
{
/**
*@定义方格的颜色
*/
colorArray = new Color[]{ Color.black,Color.gray,new Color(128,0,0),new Color(128,128,0),new Color(0,128,0),
new Color(0,128,128),new Color(0,0,128),new Color(128,0,128),new Color(128,128,64),
new Color(0,64,64),new Color(0,128,255),new Color(0,64,128),new Color(128,0,255),
new Color(128,64,0),Color.white,Color.lightGray,Color.red,Color.yellow,Color.green,
Color.cyan,Color.blue,Color.magenta,new Color(255,255,128),new Color(0,255,128),
new Color(128,255,255),new Color(128,128,255),new Color(255,0,128),new Color(255,128,64)};
hTable = new Hashtable();//~. creat a Hashtable;
paneBox = new JPanel();//放置24个方格的面板
paneBox.setLayout(new GridLayout(2,14));
paneBox.setBorder(new EmptyBorder(4,4,4,4));//设置放置方格面板的面板的边框
selectedBorder = new CompoundBorder( new MatteBorder(2,2,2,2,Color.red),
new MatteBorder(0,0,0,0,getBackground()));
unSelectedBorder = new CompoundBorder(new MatteBorder(0,0,0,0,getBackground()),
new BevelBorder(BevelBorder.LOWERED,Color.white,Color.gray));
activeSelectedB = new CompoundBorder(new MatteBorder(0,0,0,0,Color.blue),
new MatteBorder(0,0,0,0,getBackground()));
for (int i = 0;i<colorArray.length;i++)
{
colorElem colorelem = new colorElem(colorArray[i]);
paneBox.add(colorelem);
hTable.put(colorArray[i],colorelem);
}
add(new colorDisplay());
add(paneBox);
}
class Colorbox extends JPanel{
private Hashtable hTable;
private Color[] colorArray;
private Color displayColor;
private JPanel paneBox ;
private Border selectedBorder;
private Border unSelectedBorder;
private Border activeSelectedB;
public Colorbox ()
{
/**
*@定义方格的颜色
*/
colorArray = new Color[]{ Color.black,Color.gray,new Color(128,0,0),new Color(128,128,0),new Color(0,128,0),
new Color(0,128,128),new Color(0,0,128),new Color(128,0,128),new Color(128,128,64),
new Color(0,64,64),new Color(0,128,255),new Color(0,64,128),new Color(128,0,255),
new Color(128,64,0),Color.white,Color.lightGray,Color.red,Color.yellow,Color.green,
Color.cyan,Color.blue,Color.magenta,new Color(255,255,128),new Color(0,255,128),
new Color(128,255,255),new Color(128,128,255),new Color(255,0,128),new Color(255,128,64)};
hTable = new Hashtable();//~. creat a Hashtable;
paneBox = new JPanel();//放置24个方格的面板
paneBox.setLayout(new GridLayout(2,14));
paneBox.setBorder(new EmptyBorder(4,4,4,4));//设置放置方格面板的面板的边框
selectedBorder = new CompoundBorder( new MatteBorder(2,2,2,2,Color.red),
new MatteBorder(0,0,0,0,getBackground()));
unSelectedBorder = new CompoundBorder(new MatteBorder(0,0,0,0,getBackground()),
new BevelBorder(BevelBorder.LOWERED,Color.white,Color.gray));
activeSelectedB = new CompoundBorder(new MatteBorder(0,0,0,0,Color.blue),
new MatteBorder(0,0,0,0,getBackground()));
for (int i = 0;i<colorArray.length;i++)
{
colorElem colorelem = new colorElem(colorArray[i]);
paneBox.add(colorelem);
hTable.put(colorArray[i],colorelem);
}
add(new colorDisplay());
add(paneBox);
}
*@定义每个方格
*/
private class colorElem extends JPanel implements MouseListener
{
private Color color_value ;
private boolean color_selected;
public colorElem() {};
public colorElem ( Color c )
{
color_value = c ;
setBackground(c);
String msc = "R"+c.getRed()+",G"+c.getGreen()+",B"+c.getBlue();
setToolTipText(msc);
addMouseListener(this);
}
public Dimension getPreferredSize()
{
return new Dimension(17,17);
}
public Dimension getMaximunSize()
{ return getPreferredSize();}
public Dimension getMinimunSize()
{ return getPreferredSize();}
public void setSelected(boolean selected)
{
color_selected = selected;
if(color_selected)
setBorder(selectedBorder);
else
setBorder(unSelectedBorder);
}
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e)
{
displayColor = getBackground();
}
public void mouseEntered(MouseEvent e)
{
setBorder(activeSelectedB);
}
public void mouseExited(MouseEvent e)
{
setBorder(color_selected?selectedBorder:unSelectedBorder);
}
}
private class colorDisplay extends JPanel
{
private JPanel display;
public colorDisplay()
{
setBorder(BorderFactory.createLoweredBevelBorder());
display = new colorElem();
display.setBackground(displayColor);
display.setBorder(new CompoundBorder(new MatteBorder(0,0,0,0,getBackground()),
new BevelBorder(BevelBorder.LOWERED,Color.white,Color.gray)));
add(display,BorderLayout.CENTER);
}
public Dimension getPreferredSize()
{ return new Dimension(34,34);}//设置大小
}
}
你说的左端,中间,应该是中间的左边?
则空件会随着窗口的最大化,它的宽度而变很大;
我的意思是把控件放在一个固定的位置,而且它的大小
也不会随着窗口的改变而改变.