इस तरह के विशिष्ट मामले के लिए आपको अपना खुद का सीमा बनाना होगा।
यहाँ ढाल सीमा वर्ग के साथ एक उदाहरण है:
public static class GradientBorder implements Border
{
private Insets margin;
public GradientBorder (int top, int left, int bottom, int right)
{
super();
margin = new Insets (top, left, bottom, right);
}
public void paintBorder (Component c, Graphics g, int x, int y, int width, int height)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint (new GradientPaint (x, y, Color.RED, x + width, y, Color.BLUE));
Area border = new Area (new Rectangle (x, y, width, height));
border.subtract (new Area (new Rectangle (x + margin.left, y + margin.top,
width - margin.left - margin.right, height - margin.top - margin.bottom)));
g2d.fill (border);
}
public Insets getBorderInsets (Component c)
{
return margin;
}
public boolean isBorderOpaque()
{
return true;
}
}
बेशक आप किसी भी अन्य ढाल दिशा, रंग निर्दिष्ट कर सकते हैं e.t.c. आप अपनी शुरुआत को कन्स्ट्रक्टर में भी रख सकते हैं (यदि आपको इसकी आवश्यकता है)। इसका इस्तेमाल करने के लिए आपको सिर्फ सीमा निर्धारित करने के लिए (किसी भी JComponent उत्तराधिकारी में) की आवश्यकता होगी:
jComponent.setBorder (new GradientBorder (25, 50, 25, 50));
मूल रूप से आप आप किसी भी रंग/एनीमेशन/आकार के साथ इस तरह की तरह किसी भी सीमा बना सकते हैं e.t.c.
और जिस तरह से - isBorderOpaque() विधि सच लौटना चाहिए, आप अर्द्ध पारदर्शी सीमा (अर्द्ध पारदर्शी रंग, गोल कोने और इस तरह के साथ आकार के साथ उदाहरण के लिए) बनाना चाहते हैं, अन्यथा आप से निपटने के लिए होगा घटक पुनर्भुगतान समस्याएं।