czyli rozumiem, ze w wypadku gdyby panel był tym głównym, dużym "mózgiem" całego programu, mam tworzyc klasy ktore rozszerzaja ten główny panel, a nie posiadają obiekt tego głownego panelu?
moje zastanowienia wzięły się z tego, że myśle jak podejsc do tego problemu:
posiadam 3 klasy: GUI - rozszerzajaca JFrame, ScreenWindow - rozszerza JDialog oraz FullScreenPanel - roszerza JPanel. Sa one w sobie po kolei zawarte (tzn. w GUI jest przycisk ktory wlacza ScreenWindow na ktorym umieszczony jest FullScreenPanel ;) )
Chodzi o to, ze chce zamknąć ScreenWindow za pośrednictwem tego panelu FullScreenPanel. FullScreenPanel implementuje mouselistenera i kiedy przycisk myszy zwolnie, ScreenWindow ma sie zamknąć.
Obiekt ScreenWindow jest stworzony w GUI - w klasie anonimowej przycisku(actionlistener).
I nie wiem jak moge z poziomu panelu FullScreenPanel zmieniac setVisible(t/f) na obiekcie ScreenWindow stworzonym właśnie w GUI w klasie anonimowej.
Troche pogmatwane, ale dam kod na wszelki wypadek ;)
public class GUI extends JFrame
{
private JButton zrobScreen;
private ScreenWindow scwin;
public GUI()
{
zrobScreen = new JButton("KLIKNIJ");
zrobScreen.setBounds(10, 10, 120, 40);
zrobScreen.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0)
{
if(scwin == null)
scwin = new ScreenWindow(GUI.this);
scwin.setVisible(true);
}
});
add(zrobScreen);
nastepna klasa:
public class ScreenWindow extends JDialog
{
public ScreenWindow(){}
public ScreenWindow(JFrame owner)
{
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setUndecorated(true);
JPanel fs = new FullScreenPanel();
fs.setVisible(true);
add(fs);
setVisible(false);
setLayout(null);
}
}
oraz ostatni, panel FullScreenPanel:
public class FullScreenPanel extends JPanel implements MouseListener
{
private GUI gui;
private Screen sc;
public FullScreenPanel()
{
[...]
try {
if(robot==null)
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
sc = new Screen();
gui = new GUI();
}
@Override
public void mouseReleased(MouseEvent e1)
{
[..]
// nie wiem jak w tym miejscu zamknac ten JDialog- ScreenWindow ktory sie otworzyl po kliknieciu buttona w gui
gui.setVisible(true);
JOptionPane.showMessageDialog(this, "Sialala!");
}
}
Nie wstawialem pełnych klas bo to by tylko utrudniło rozwiazanie mojego zapytania ;p
licze na odp :D