package org.infosec.ismp.applet.manager.component.panel.component;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.infosec.ismp.applet.manager.component.panel.SJTUConst;
import org.infosec.ismp.applet.manager.component.panel.utils.SJTUUtils;
/**
* 标题面板。
*/
public class TitlePanel extends JPanel {
public static void main(String[] args) {
JPanel panel = new JPanel();
panel.add(new InfoComponent("info"));
JPanel comp = new TitlePanel("啊", panel);
// SJTUUtils.showCompoentInFrame(comp);
}
private String text;
private Font textFont = SJTUConst.LABELFONT;
private Color textColor = Color.WHITE;
private Color titleColor = new Color(120, 180, 230, 128);
private Color titleGradientColor = new Color(120, 200, 230, 128);
// private JComponent content;
public TitlePanel(String text, JComponent content) {
this.text = text;
// this.content = content;
content.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
Title title = new Title();
this.setLayout(new BorderLayout());
this.add(title, BorderLayout.NORTH);
this.add(content, BorderLayout.CENTER);
this.setBorder(BorderFactory.createLineBorder(Color.GREEN.darker()));
}
/**
* 标题栏
*/
class Title extends JComponent {
public Dimension getPreferredSize() {
JLabel label = SJTUUtils.getLabel(text, textFont, textColor);
Dimension labelSize = label.getPreferredSize();
return new Dimension(labelSize.width, labelSize.height + 8);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
Dimension size = this.getSize();
GradientPaint paint = new GradientPaint(size.height / 2f, 0, titleColor, size.height / 2f, size.height / 1.2f, titleGradientColor, false);
g2d.setPaint(paint);
g2d.setColor(titleGradientColor);
g2d.fillRoundRect(0, 0, size.width, size.height, 3, 2);
g2d.setColor(titleColor);
g2d.fillRect(0, size.height / 2, size.width, size.height);
JLabel label = SJTUUtils.getLabel(text, textFont, textColor);
Dimension labelSize = label.getPreferredSize();
int x = (int) (size.width / 2.0 - labelSize.width / 2.0);
int y = (int) (size.height / 2.0 - labelSize.height / 2.0);
int w = labelSize.width;
int h = labelSize.height;
SJTUUtils.paintComponent(g2d, label, this, x, y, w, h);
}
}
}