JDK 7添加了JLayer以支持任意组件之上的视觉装饰.对于早期版本,java.net上的项目JXLayer实际上是它的前身,具有非常相似的api
这是一个基本的例子,使用自定义的LayerUI,它从容器中的一个组件到另一个容器中的另一个组件绘制一条直线.两个容器的公共父级使用该UI来装饰JLayer:
JComponent comp = Box.createVerticalBox();
final JComponent upper = new JPanel();
final JButton upperChild = new JButton("happy in upper");
upper.add(upperChild);
final JComponent lower = new JPanel();
final JButton lowerChild = new JButton("unhappy in lower");
lower.add(lowerChild);
comp.add(upper);
comp.add(lower);
LayerUI<JComponent> ui = new LayerUI<JComponent>() {
@Override
public void paint(Graphics g, JComponent c) {
super.paint(g, c);
Rectangle u = SwingUtilities.convertRectangle(upper, upperChild.getBounds(), c);
Rectangle l = SwingUtilities.convertRectangle(lower, lowerChild.getBounds(), c);
g.setColor(Color.RED);
g.drawLine(u.x, u.y + u.height, l.x, l.y);
}
};
JLayer<JComponent> layer = new JLayer<JComponent>(comp, ui);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2095 次 |
最近记录: |