圆角Border,JLabel,JPanel

//=============================Border===================================
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.border.AbstractBorder;
public class RoundRectBorder extends AbstractBorder {

private static final long serialVersionUID = 1L;
private Color fieldColor = Color.white;
private int fieldThickness = 1;

public RoundRectBorder(Color color, int thickness) {
fieldColor = color;
fieldThickness = thickness;
}
public RoundRectBorder(Color color) {
fieldColor = color;
}
public Insets getBorderInsets(Component component) {
int x = fieldThickness/2;
int y = fieldThickness/2;
int w = fieldThickness/2;
int h = fieldThickness/2;
Insets insets = new Insets(x,y,w,h);
return insets;
}

public boolean isBorderOpaque() {
return false;
}

public void paintBorder(Component component, Graphics g, int x,
int y, int width, int height) {
Color oldColor = g.getColor();
g.setColor(fieldColor);
g.fillRect(x, y, fieldThickness/2, fieldThickness/2);
g.fillRect(x+width - fieldThickness/2, y, fieldThickness/2, fieldThickness/2);
g.fillRect(x+width - fieldThickness/2, y + height - fieldThickness/2, fieldThickness/2, fieldThickness/2);
g.fillRect(x, y + height - fieldThickness/2, fieldThickness/2, fieldThickness/2);

g.setColor(oldColor);
g.fillArc(x, y, fieldThickness, fieldThickness, 90, 90);
g.fillArc(x+width - fieldThickness, y, fieldThickness, fieldThickness, 0, 90);
g.fillArc(x+width - fieldThickness, y + height - fieldThickness, fieldThickness, fieldThickness, 0, -90);
g.fillArc(x, y + height - fieldThickness, fieldThickness,fieldThickness, -90, -90);

g.setColor(oldColor);
}
}

//=============================Label===================================
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JLabel;
public class RoundRectLabel extends JLabel {
private static final long serialVersionUID = 7049192876836921123L;
private int fieldRoundRect;
private int fieldArc = 1234;

/**
* Create a label with round arc
* @param text: text show in label
* @param roundRect: round arc
* @param arc: should be in {1,2,3,4,12,34,1234}, default is 1234
*/
public RoundRectLabel(String text, int roundRect,int arc) {
super(text);
fieldArc = arc;
fieldRoundRect = roundRect;
}

public void paintComponent(Graphics g) {
g.setColor(getBackground());
int fieldX = getBounds().x;
int fieldY = getBounds().y;
int fieldWeight = getSize().width;
int fieldHeight = getSize().height;

Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if(fieldArc == 1){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY+fieldRoundRect/2, fieldWeight, fieldHeight);
g2d.fillRect(fieldX+fieldWeight-fieldRoundRect/2, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 2){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY+fieldRoundRect/2, fieldWeight, fieldHeight);
g2d.fillRect(fieldX, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 3){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
g2d.fillRect(fieldX, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 4){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
g2d.fillRect(fieldX+fieldWeight-fieldRoundRect/2, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 12){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY+fieldRoundRect/2, fieldWeight, fieldHeight);
}else if(fieldArc == 34){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
}else if(fieldArc == 1234){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
}

super.paintComponent(g);
}

}

//================================Panel================================
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JPanel;
public class RoundRectPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 7049192876836921123L;
private int fieldRoundRect;
private int fieldArc = 1234;

/**
* Create a Panel with round arc
* @param roundRect: round arc
* @param arc: should be in {1,2,3,4,12,34,1234}, default is 1234
*/
public RoundRectPanel(int roundRect,int arc) {
fieldArc = arc;
fieldRoundRect = roundRect;
setOpaque(true);
}

public void paintComponent(Graphics g) {

int fieldX = 0;
int fieldY = 0;
int fieldWeight = getSize().width;
int fieldHeight = getSize().height;
Graphics2D g2d = (Graphics2D)g;
g.setColor(Color.white);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldHeight);
g.setColor(getBackground());
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight,fieldRoundRect,fieldRoundRect);

if(fieldArc == 1){
g2d.fillRect(fieldX, fieldY+fieldRoundRect/2, fieldWeight, fieldHeight);
g2d.fillRect(fieldX+fieldWeight-fieldRoundRect/2, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 2){
g2d.fillRect(fieldX, fieldY, fieldWeight-fieldRoundRect/2, fieldHeight);
g2d.fillRect(fieldWeight-fieldRoundRect/2, fieldHeight-fieldRoundRect/2, fieldRoundRect/2, fieldRoundRect/2);
}else if(fieldArc == 3){
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
g2d.fillRect(fieldX, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 4){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
g2d.fillRect(fieldX+fieldWeight-fieldRoundRect/2, fieldY, fieldRoundRect/2, fieldHeight);
}else if(fieldArc == 12){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY+fieldRoundRect/2, fieldWeight, fieldHeight);
}else if(fieldArc == 34){
g2d.fillRoundRect(fieldX, fieldY, fieldWeight, fieldHeight, fieldRoundRect, fieldRoundRect);
g2d.fillRect(fieldX, fieldY, fieldWeight, fieldRoundRect/2);
}
}

}


//userage
RoundRectLabel roundRectLabel_1 = new RoundRectLabel("", 10, 2);
roundRectLabel_1.setForeground(Color.white);
roundRectLabel_1.setBackground(new Color(91,124,168));
roundRectLabel_1.setPreferredSize(new Dimension(0, 20));
roundRectLabel_1.setText("");
rightTopPanel1.add(roundRectLabel_1, BorderLayout.NORTH);
//=============
RoundRectPanel roundRectPanel = new RoundRectPanel(0, 0);
roundRectPanel.setBorder(new RoundRectBorder(Color.lightGray,30));
roundRectPanel.setBackground(Color.WHITE);
panel2.add(roundRectPanel, BorderLayout.CENTER);
roundRectPanel.setLayout(new BorderLayout(0, 0));

xx.add(panel)
//==============
roundRectPanel.setBorder(new RoundRectBorder(Color.lightGray,30));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值