Ogólnie to witam, to mój pierwszy post. Javę znam od początku sierpnia, ale z samym programowaniem mam styczność już od ponad 3 lat.
Chciałem w mojej aplikacji zmienić interfejs na nieco elastyczniejszy. Same okno stworzyłem w generatorze NetBeansa (tzn. wyklikałem), ale do dodania poszczególnych okien użyłem kodu.
Problem jest taki: stworzyłem JPanel, który nie korzysta z komponentów, tylko sam rysuje przez Graphics2D i przechwytuje zdarzenia myszy. ustawiłem go jako zakładkę w JTabbedPane, a ten na warstwę DEFAULT_LAYER w JFrame (wcześniej ustawiłem pasek menu i toobar na MODAL_LAYER).
Na warstwę wyżej dałem JInternalFrame z JPanelami, w tym jeden zawiera JApplet, który również jest rysowany przez Graphics2D i sam przechwytuje zdarzenia.
Problem polega na tym, że przy rysowaniu tego, JPanela najniżej, nadrysowuje on JInternalFrame'y i nie są one widoczne, dopiero jak się na nie trafi i naciśnie
link do aplikacji:
http://tizaw.boo.pl/JavaBlock/JavaBlock-beta.jar
Dlaczego komponent z kolorami nie znika? No, może czemu akurat inne znikają, bo o to mi bardziej chodzi:p
kody:
kawałki konstruktora okna:
JLayeredPane lp = getLayeredPane();
lp.setLayer(menuBar, JLayeredPane.MODAL_LAYER);
lp.setLayer(toolBar, JLayeredPane.MODAL_LAYER);
blockEdit.setContentPane(Manager.blockEdit);
blockEdit.setVisible(true);
blockEdit.setBounds(2, 100, 250, 400);
lp.add(blockEdit, JLayeredPane.MODAL_LAYER);
lp.add(Manager, JLayeredPane.DEFAULT_LAYER);
Manager.setBounds(FLOW.getBounds());
Manager.setOpaque(false);
lp.moveToBack(Manager);
Drugie pytanie, to czemu Bounds menedżera jest przestawiony w pionie. W metodzie componentResized (głównego JFrame) przypisuję mu boundsa komponentu JPanel, który rozszerza się wraz z oknem:
Manager.setBounds(FLOW.getBounds());