Mega Code Archive

 
Categories / Java / Swing Components
 

Button Label

//package com.towel.swing; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.AbstractButton; import javax.swing.UIManager; public class ButtonLabel extends AbstractButton {   private String text;   private int height;   public ButtonLabel(String text) {     setText(text);     addMouseListener(new MouseClick());   }   @Override   public void paintComponent(Graphics g) {     try {       Graphics2D g2d = (Graphics2D) g.create();       g2d.setFont(UIManager.getFont("TitledBorder.font"));       g2d.setColor(getColor());       g2d.drawString(text, 0, (height + 6) / 2);       g2d.dispose();     } catch (Exception e) {       e.printStackTrace();     }   }   public String getText() {     return text;   }   public void setText(String text) {     this.text = text;     updateSize();   }   private void updateSize() {     FontMetrics metrics = getFontMetrics(UIManager         .getFont("TitledBorder.font"));     height = metrics.getHeight();     setPreferredSize(new Dimension(metrics.stringWidth(getText()), height));   }   private class MouseClick extends MouseAdapter {     @Override     public void mouseClicked(MouseEvent evnt) {       for (ActionListener listener : getActionListeners())         listener.actionPerformed(new ActionEvent(ButtonLabel.this, 0,             ""));     }     @Override     public void mouseEntered(MouseEvent evnt) {       if (getActionListeners().length == 0)         return;       setCursor(new Cursor(Cursor.HAND_CURSOR));     }     @Override     public void mouseExited(MouseEvent evnt) {       setCursor(new Cursor(Cursor.DEFAULT_CURSOR));     }   }   private Color getColor() {     return UIManager.getColor("TitledBorder.titleColor");   } }