Hi, It is indeed possible to create a custom border.
Please see the snippet at the end of this mail. The snippet is meant for ULC 6.1. Moreover, please refer to ULC 6.1's ULC Extension Guide before you implement your own extension. I hope this helps. Thanks and regards, Janak PS: Kindly subscribe and post to [EMAIL PROTECTED] -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of [EMAIL PROTECTED] Sent: Dienstag, 25. Juli 2006 17:22 To: [email protected] Subject: custom border Hi all, Is it possible to create custom borders in ulc by extending ULCAbstract border. I have a ULCTable and I have used a custom cell renderer to draw borders around multiple cells using ULCMatteBorder, but I would like to specify a custom color for the top, left, right, and bottom of the border. Thanks for your help, ---------------------------------- import com.ulcjava.base.application.AbstractApplication; import com.ulcjava.base.application.ULCBoxPane; import com.ulcjava.base.application.ULCButton; import com.ulcjava.base.application.ULCFrame; import com.ulcjava.base.application.border.ULCAbstractBorder; import com.ulcjava.base.application.util.Color; import com.ulcjava.base.client.border.UIAbstractBorder; import com.ulcjava.base.development.DevelopmentRunner; import javax.swing.border.EmptyBorder; import java.awt.Component; import java.awt.Graphics; public class CustomBorderSnippet extends AbstractApplication { public void start() { ULCButton button = new ULCButton("Button"); button.setBorder(new ULCMyBorder(Color.red, Color.green, Color.blue, Color.yellow)); ULCBoxPane box = new ULCBoxPane(); box.add(ULCBoxPane.BOX_CENTER_CENTER, button); ULCFrame frame = new ULCFrame("CustomBorderSnippet"); frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE); frame.add(box); frame.setSize(200, 200); frame.setVisible(true); } public static void main(String[] args) { DevelopmentRunner.setApplicationClass(CustomBorderSnippet.class); DevelopmentRunner.main(args); } public static class ULCMyBorder extends ULCAbstractBorder { private Color topColor, leftColor, bottomColor, rightColor; public ULCMyBorder(Color t, Color l, Color b, Color r) { topColor = t; leftColor = l; bottomColor = b; rightColor = r; } protected String typeString() { return UIMyBorder.class.getName(); } protected void uploadStateUI() { super.uploadStateUI(); setStateUI("topColor", topColor); setStateUI("leftColor", leftColor); setStateUI("bottomColor", bottomColor); setStateUI("rightColor", rightColor); } } public static class UIMyBorder extends UIAbstractBorder { protected Object createBasicObject(Object[] arguments) { return new MyBorder(3, 3, 3, 3); } } public static class MyBorder extends EmptyBorder { public MyBorder(int top, int left, int bottom, int right) { super(top, left, bottom, right); } private java.awt.Color topColor, leftColor, bottomColor, rightColor; public void setTopColor(java.awt.Color topColor) { this.topColor = topColor; } public void setLeftColor(java.awt.Color leftColor) { this.leftColor = leftColor; } public void setBottomColor(java.awt.Color bottomColor) { this.bottomColor = bottomColor; } public void setRightColor(java.awt.Color rightColor) { this.rightColor = rightColor; } /** * Paints the border. */ public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { java.awt.Insets insets = getBorderInsets(c); java.awt.Color oldColor = g.getColor(); g.translate(x, y); g.setColor(topColor); g.fillRect(0, 0, width - insets.right, insets.top); g.setColor(leftColor); g.fillRect(0, insets.top, insets.left, height - insets.top); g.setColor(bottomColor); g.fillRect(insets.left, height - insets.bottom, width - insets.left, insets.bottom); g.setColor(rightColor); g.fillRect(width - insets.right, 0, insets.right, height - insets.bottom); g.translate(-x, -y); g.setColor(oldColor); } } } _______________________________________________ ULC-developer mailing list [email protected] http://lists.canoo.com/mailman/listinfo/ulc-developer
