Witam,

nadarzyła się okazja by sprawdzić jak w praktyce działa nowe JDK, przy okazji wykorzystując nowy komponent Swinga - JLayer. JLayer miał w założeniu służyć do dekorowania JInternalFrame umieszczonych oczywiście na odpowiednim JDesktopPane. Dla testów LayerUI jest zerżniętę wprost z tutoriala i wygląda tak:

public class MyLayerUI extends LayerUI<JInternalFrame> {

    @Override
    public void paint(Graphics g, JComponent c) {
        super.paint(g, c);

        Graphics2D g2 = (Graphics2D) g.create();

        int w = c.getWidth();
        int h = c.getHeight();
        g2.setComposite(AlphaComposite.getInstance(
                AlphaComposite.SRC_OVER, .5f));
        g2.setPaint(new GradientPaint(0, 0, Color.yellow, 0, h, Color.red));
        g2.fillRect(0, 0, w, h);

        g2.dispose();
    }
}

JInternalFrame (widget) wrzucam do JDesktopPane (panel):

JLayer<JInternalFrame> layer = new JLayer<JInternalFrame>(widget, new MyLayerUI());
widget.setBounds(0, 0, 150, 200);
widget.setVisible(true);
layer.setBounds(widget.getBounds());
layer.setVisible(true);

panel.add(layer);

Całość rysuje się tak jak powinna, jednak powstałych w ten sposób widgetów nie można ani przeciągać ani zmieniać ich rozmiarów. Poszukuję jakiegoś sposobu na przywrócenie tej funkcjonalności prostszego niż pisanie od nowa MouseListnerów i ręczne zmienianie położenia i rozmiaru, być może ktoś z was ma jakieś ciekaw pomysły?