สำหรับกรณีเฉพาะดังกล่าว คุณจะต้องสร้างเส้นขอบของคุณเอง
นี่คือตัวอย่างที่มีคลาสเส้นขอบแบบไล่ระดับสี:
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;
}
}
แน่นอนว่าคุณสามารถระบุทิศทางการไล่ระดับสี สี ฯลฯ ได้ คุณสามารถใส่การเริ่มต้นลงในตัวสร้างได้เช่นกัน (ถ้าคุณต้องการ) หากต้องการใช้งานคุณจะต้องตั้งค่าเส้นขอบ (ในตัวต่อจาก JComponent):
jComponent.setBorder ( new GradientBorder ( 25, 50, 25, 50 ) );
โดยพื้นฐานแล้ว คุณสามารถสร้างเส้นขอบตามที่คุณต้องการด้วยวิธีนี้ด้วยการระบายสี/แอนิเมชัน/รูปร่างต่างๆ เป็นต้น
และโดยวิธีการ - วิธีการ isBorderOpaque () ควรคืนค่าเป็นจริงหากคุณต้องการสร้างเส้นขอบกึ่งโปร่งใส (เช่นด้วยสีกึ่งโปร่งใสรูปร่างที่มีมุมโค้งมนและอื่น ๆ ) มิฉะนั้นคุณจะต้องจัดการกับปัญหาการทาสีส่วนประกอบใหม่
person
Mikle Garin
schedule
09.04.2012