Package aurelienribon.utils.swing

Source Code of aurelienribon.utils.swing.GroupBorder

package aurelienribon.utils.swing;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import javax.swing.border.Border;

public class GroupBorder implements Border {
  private final int titleHeight = 20;
  private final int borderPadding = 0;
  private String title = "";

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  @Override
  public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
    Graphics2D gg = (Graphics2D) g.create();
   
    int titleW = gg.getFontMetrics().stringWidth(title) + 20;
    int titleDescent = gg.getFontMetrics().getDescent();
   
    gg.setColor(c.getBackground());

    if (!title.equals("")) {
      int[] xs = {0, titleW, titleW + titleHeight, 0};
      int[] ys = {0, 0, titleHeight, titleHeight};
      gg.fillPolygon(xs, ys, 4);
      gg.fillRect(0, titleHeight, width, height);
      gg.setColor(c.getForeground());
      gg.drawString(title, 10, titleHeight - titleDescent);
    } else {
      gg.fillRect(0, 0, width, height);
    }
   
    gg.dispose();
  }

  @Override
  public Insets getBorderInsets(Component c) {
    return new Insets(!title.equals("") ? borderPadding + titleHeight : borderPadding, borderPadding, borderPadding, borderPadding);
  }

  @Override
  public boolean isBorderOpaque() {
    return false;
  }
}
TOP

Related Classes of aurelienribon.utils.swing.GroupBorder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.