com.jidesoft.swing.PartialLineBorder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jide-oss Show documentation
Show all versions of jide-oss Show documentation
JIDE Common Layer (Professional Swing Components)
package com.jidesoft.swing;
import javax.swing.border.LineBorder;
import java.awt.*;
/**
* This is a better version of LineBorder which allows you to show line only at one side or several
* sides and supports rounded corner.
*/
public class PartialLineBorder extends LineBorder implements PartialSide {
private int _sides = ALL;
private int _roundedCornerSize = 5;
public PartialLineBorder(Color color) {
super(color);
}
public PartialLineBorder(Color color, int thickness) {
super(color, thickness);
}
public PartialLineBorder(Color color, int thickness, boolean roundedCorners) {
super(color, thickness, roundedCorners);
}
public PartialLineBorder(Color color, int thickness, boolean roundedCorners, int roundedCornerSize) {
super(color, thickness, roundedCorners);
_roundedCornerSize = roundedCornerSize;
}
public PartialLineBorder(Color color, int thickness, int side) {
super(color, thickness);
_sides = side;
}
public int getSides() {
return _sides;
}
public void setSides(int sides) {
_sides = sides;
}
public int getRoundedCornerSize() {
return _roundedCornerSize;
}
public void setRoundedCornerSize(int roundedCornerSize) {
_roundedCornerSize = roundedCornerSize;
}
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Color oldColor = g.getColor();
int i;
g.setColor(lineColor);
for (i = 0; i < thickness; i++) {
if (_sides == ALL) {
if (!roundedCorners)
g.drawRect(x + i, y + i, width - i - i - 1, height - i - i - 1);
else {
Object o = JideSwingUtilities.setupShapeAntialiasing(g);
g.drawRoundRect(x + i, y + i, width - i - i - 1, height - i - i - 1, _roundedCornerSize, _roundedCornerSize);
JideSwingUtilities.restoreShapeAntialiasing(g, o);
}
}
else {
if ((_sides & NORTH) != 0) {
g.drawLine(x, y + i, x + width - 1, y + i);
}
if ((_sides & SOUTH) != 0) {
g.drawLine(x, y + height - i - 1, x + width - 1, y + height - i - 1);
}
if ((_sides & WEST) != 0) {
g.drawLine(x + i, y, x + i, y + height - 1);
}
if ((_sides & EAST) != 0) {
g.drawLine(x + width - i - 1, y, x + width - i - 1, y + height - 1);
}
}
}
g.setColor(oldColor);
}
@Override
public Insets getBorderInsets(Component c) {
Insets borderInsets = super.getBorderInsets(c);
if ((_sides & NORTH) == 0) {
borderInsets.top = 0;
}
if ((_sides & SOUTH) == 0) {
borderInsets.bottom = 0;
}
if ((_sides & WEST) == 0) {
borderInsets.left = 0;
}
if ((_sides & EAST) == 0) {
borderInsets.right = 0;
}
return borderInsets;
}
@Override
public Insets getBorderInsets(Component c, Insets insets) {
Insets borderInsets = super.getBorderInsets(c, insets);
if ((_sides & NORTH) == 0) {
borderInsets.top = 0;
}
if ((_sides & SOUTH) == 0) {
borderInsets.bottom = 0;
}
if ((_sides & WEST) == 0) {
borderInsets.left = 0;
}
if ((_sides & EAST) == 0) {
borderInsets.right = 0;
}
return borderInsets;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy