帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

153 lines
3.3 KiB

package com.fr.design.mainframe.loghandler;
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.FontMetrics;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class LogHandlerBarUI extends ComponentUI implements MouseListener, FocusListener {
private static final Color DEFAULT_FOREGROUND = new Color(0, 0, 0);
private static final int TEXT_LEADING_GAP = 14;
private boolean armed;
private int textLeadingGap = TEXT_LEADING_GAP;
// 渐变色起始色
private Color lightColor;
// 渐变色结束色
private Color darkColor;
// 该UI实例对应的CaptionButton
protected LogHandlerBar button;
public LogHandlerBarUI() {
}
/**
* 创建UI
* @param c 组件
* @return 组件UI
*/
public static ComponentUI createUI(JComponent c) {
return new LogHandlerBarUI();
}
/**
*配置组件
* @param c 组件
*/
public void installUI(JComponent c) {
button = (LogHandlerBar) c;
button.setForeground(DEFAULT_FOREGROUND);
button.setFocusable(true);
button.addMouseListener(this);
button.addFocusListener(this);
}
/**
* 解除组件配置
* @param c 组件
*/
public void uninstallUI(JComponent c) {
button.removeMouseListener(this);
button.removeFocusListener(this);
}
protected void paintBackground(Graphics g) {
int w = button.getWidth();
int h = button.getHeight();
Graphics2D g2d = (Graphics2D) g;
GradientPaint gp = new GradientPaint(1, 1, darkColor, 1, (float)(h - 1), darkColor);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
public void paint(Graphics g, JComponent c) {
super.paint(g, c);
if (armed) {
button.setWithSerious(false);
}
if (button.IsWithSerious()) {
lightColor = new Color(255, 242, 218);
darkColor = new Color(255, 219, 108);
} else {
lightColor = new Color(226, 230, 234);
darkColor = new Color(183, 188, 195);
}
paintBackground(g);
paintCaptionText(g);
}
protected void paintCaptionText(Graphics g) {
FontMetrics fm = g.getFontMetrics();
Color color = button.getForeground();
g.setColor(color);
int y = ((button.getHeight() - fm.getHeight()) / 2) + fm.getAscent();
if (button.getText() != null) {
g.drawString(button.getText(), textLeadingGap, y);
}
}
/**
* 鼠标点击
* @param e 鼠标事件
*/
public void mousePressed(MouseEvent e) {
armed = true;
button.requestFocus();
}
/**
* 鼠标按下并释放
* @param e 鼠标事件
*/
public void mouseEntered(MouseEvent e) {
}
/**
*事件结束
* @param e 鼠标事件
*/
public void mouseExited(MouseEvent e) {
button.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
/**
*失去键盘焦点
* @param e 焦点事件
*/
public void focusLost(FocusEvent e) {
armed = false;
}
/**
*鼠标点击
* @param e 鼠标事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
*鼠标释放
* @param e 鼠标事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
*获取键盘焦点
* @param e 焦点事件
*/
public void focusGained(FocusEvent e) {
}
}