1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
public class CButton extends JButton
{
...
public void paint(Graphics g)
{
System.out.println("paint() CButton");
super.paint(g);
Graphics2D g2 = (Graphics2D) g ;
int x,y,w,h ;
int ix,iy ;
x = (int)this.getBounds().getX() ;
y = (int)this.getBounds().getY() ;
w = (int)this.getBounds().getWidth() ;
h = (int)this.getBounds().getHeight() ;
GradientPaint redtowhite = new GradientPaint(0,0,cStart,w,h,cEnd);
g2.setPaint(redtowhite);
g2.fill(new Rectangle2D.Double(4,4,w-6,h-6)) ;
// image to draw ?
if (image != null)
{
System.out.println("draw image...");
g2.drawImage(image,5,5,this);
}
// label
g2.setColor(cText);
g2.setFont(font);
FontMetrics fm = g2.getFontMetrics(font); // metrics for this object
Rectangle2D rect = fm.getStringBounds(this.getText(), g2); // size of string
int textHeight = (int)(rect.getHeight());
int textWidth = (int)(rect.getWidth());
//... Center text horizontally and vertically
if(iTextPos == Left)
{
ix = 5;
iy = (this.getHeight() - textHeight) / 2 + fm.getAscent();
}
else if(iTextPos == Center)
{
ix = (this.getWidth() - textWidth) / 2;
iy = (this.getHeight() - textHeight) / 2 + fm.getAscent();
}
else
{
ix = (this.getWidth() - textWidth) - 5 ;
iy = (this.getHeight() - textHeight) / 2 + fm.getAscent();
}
g2.drawString(this.getText(), ix, iy);
} |
Partager