Code
//Display "DropLocation" using JLayer
class DropLocationLayerUI extends LayerUI {
private static final int LINEWIDTH = 3;
private final Rectangle lineRect = new Rectangle();
@Override public void paint(Graphics g, JComponent c) {
super.paint (g, c);
JLayer layer = (JLayer)c;
DnDTabbedPane tabbedPane = (DnDTabbedPane)layer.getView();
DnDTabbedPane.DropLocation loc = tabbedPane.getDropLocation();
if(loc != null && loc.isDropable() && loc.getIndex()>=0) {
int index = loc.getIndex();
boolean isZero = index==0;
Rectangle r = tabbedPane.getBoundsAt(isZero?0:index-1);
if(tabbedPane.getTabPlacement()==JTabbedPane.TOP ||
tabbedPane.getTabPlacement()==JTabbedPane.BOTTOM) {
lineRect.setRect(
r.x-LINEWIDTH/2+r.width*(isZero?0:1), r.y,LINEWIDTH,r.height);
}else{
lineRect.setRect(
r.x,r.y-LINEWIDTH/2+r.height*(isZero?0:1), r.width,LINEWIDTH);
}
Graphics2D g2 = (Graphics2D)g.create();
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2.setColor(Color.RED);
g2.fill(lineRect);
g2.dispose();
}
}
}
private final JLabel label = new JLabel() {
// http://free-the-pixel.blogspot.com/2010/04/ghost-drag-and-drop-over-multiple.html
// Free the pixel: GHOST drag and drop, over multiple windows]
@Override public boolean contains(int x, int y) {
return false;
}
};
private final JWindow dialog = new JWindow();
public TabTransferHandler() {
dialog.add(label);
//dialog.setAlwaysOnTop(true); // Web Start
dialog.setOpacity(0.5f);
//com.sun.awt.AWTUtilities.setWindowOpacity(dialog, 0.5f); // JDK 1.6.0
DragSource.getDefaultDragSource().addDragSourceMotionListener(
new DragSourceMotionListener() {
@Override public void dragMouseMoved(DragSourceDragEvent dsde) {
Point pt = dsde.getLocation();
pt.translate(5, 5); // offset
dialog.setLocation(pt);
}
});
//...
References
2 comments:
hi thanks for your great help, I wanted to ask is there any way that is transparent JPopupMenu?, the question is I have a panel inside the popup and just want to display the popup panel is transparent and to have an effect more setOpaque nice and try and not know any way to achieve this effect would greatly appreciate it thank you
Hi Hannibal,
If I understand your requirement you might be able to use the following url:
Tooltips - Translucent and Shaped Swing Windows | Java.net
Another example:
TranslucentPopupMenuTest.java
Post a Comment