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?