自定義邊框,可以繼承AbstractBorder,需要實(shí)現(xiàn)三個(gè)方法
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)信州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。public?boolean?isBorderOpaque() 此默認(rèn)實(shí)現(xiàn)返回false。 public?Insets?getBorderInsets?(Component?c)此默認(rèn)實(shí)現(xiàn)返回一個(gè)新Insetspublic?void?paintBorder?(Component?c,?Graphics?g, int?x, int?y, int?width, int?height) 繪制邊框
繪制邊框最主要是不要在組件區(qū)域內(nèi)繪制邊框,在給定的范圍內(nèi)繪制。如下圖:
在JComponent中畫邊框調(diào)用的代碼,傳入的是組件的寬和高,起點(diǎn)是0,0,所以說邊框的厚度在組件的寬高范圍內(nèi)。
protected void paintBorder(Graphics g) {
? ? ? ? Border border = getBorder();
? ? ? ? if (border != null) {
? ? ? ? ? ? border.paintBorder(this, g, 0, 0, getWidth(), getHeight());
? ? ? ? }
? ? }
自定義了一個(gè)邊框,上下一個(gè)顏色,左右黑色的。代碼如下:
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.border.AbstractBorder;
public class MyBorder extends AbstractBorder
{
private int thickless;
private Color color;
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
{
Insets insets = getBorderInsets(c);
Color c1 = g.getColor();
g.setColor(color);
g.fillRect(x, y, width, insets.top);
g.fillRect(x, y + height-insets.bottom, width, insets.bottom);
g.setColor(Color.BLACK);
g.fillRect(x, y + insets.top, x+insets.left, y + height-insets.top);
g.fillRect(x+width-insets.right, y+insets.top, insets.right, height-insets.top-insets.bottom);
g.setColor(c1);
}
public MyBorder(int thickless, Color color)
{
super();
this.thickless = thickless;
this.color = color;
}
@Override
public Insets getBorderInsets(Component c)
{
return new Insets(thickless,thickless,thickless,thickless);
}
@Override
public boolean isBorderOpaque()
{
return true;
}
}
測(cè)試代碼如下:
JPanel jpa = new JPanel(new GridLayout(1,2));
jpa.setPreferredSize(new Dimension(400,80));
MyBorder eb = new MyBorder(5,Color.red);
MyBorder eb1 = new MyBorder(10,Color.BLUE);
JButton jb = new JButton("red");
jb.setBorder(eb);
jpa.add(jb);
JButton jb1 = new JButton("blue");
jb1.setBorder(eb1);
jb1.setSize(150,80);
jpa.add(jb1);
add(jpa);
效果如下:
由于水平有限,如果有錯(cuò)誤,請(qǐng)大家多多指導(dǎo),提高水平,共同學(xué)習(xí)。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧