1 2 package com.memoire.vainstall.xui; 3 4 import java.awt.*; 5 import javax.swing.*; 6 import javax.swing.border.*; 7 8 public class XuiTitle extends JComponent 9 { 10 public final static int LEFT =0; 11 public final static int CENTER=1; 12 public final static int RIGHT =2; 13 14 private String text_; 15 private int alignment_; 16 17 public XuiTitle(String _text) 18 { 19 this(_text,CENTER); 20 } 21 22 public XuiTitle(String _text, int _alignment) 23 { 24 text_=_text; 25 alignment_=_alignment; 26 27 setForeground(new Color(255,255,255,254)); 28 setBackground(new Color(0,0,0,96)); 29 setFont(new Font("SansSerif",Font.PLAIN,48)); 30 setBorder(new EmptyBorder(4,4,4,4)); 31 setOpaque(false); 32 } 33 34 public Dimension getPreferredSize() 35 { 36 FontMetrics fm=Toolkit.getDefaultToolkit().getFontMetrics(getFont()); 37 int h =fm.getAscent()+fm.getDescent(); return new Dimension(1,h+5); 39 } 40 41 public void paint(Graphics _g) 42 { 43 ((Graphics2D)_g).setRenderingHint 44 (RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); 45 super.paint(_g); 46 } 47 48 public void paintComponent(Graphics _g) 49 { 50 Font ft=getFont(); 51 FontMetrics fm; 52 53 while(((fm=_g.getFontMetrics(ft)) 54 .stringWidth(text_)+2>getWidth()) 55 &&(ft.getSize()>=8)) 56 ft=new Font(ft.getFamily(),ft.getStyle(),ft.getSize()-5); 57 58 int x,y; 59 60 switch(alignment_) 61 { 62 case 0: x=2; break; 63 case 2: x=getWidth()-2-fm.stringWidth(text_); break; 64 default: x=(getWidth()-fm.stringWidth(text_))/2; break; 65 } 66 67 y=(getHeight()-fm.getAscent()-fm.getDescent())/2; 68 y+=fm.getAscent(); 69 70 Graphics2D g=(Graphics2D)_g; 71 g.setFont(ft); 72 73 76 g.setColor(getBackground()); 77 g.drawString(text_,x-1,y-1); 78 g.drawString(text_,x+1,y-1); 79 g.drawString(text_,x-1,y+1); 80 g.drawString(text_,x+1,y+1); 81 g.setColor(getForeground()); 82 g.drawString(text_,x,y); 83 } 84 } 85 86 | Popular Tags |