Główna JFrame

0

Witam
Mam mała aplikacja składająca sie z kilku JFrame. Z jednej z nich wywołuje kilka mniejszyc (np okno z wyborem osoby). Czy w JFrame mozna ustawic wlasciwosc(?) typu, że jest ona oknem głównym, dla pozostałych? Chodzi mi o to, że jak spuszczam tą pierwszą JFrame do paska, to żeby wszystkie pozostałe które zostały "z niej " otworzone też zostały spuszczone do paska.

Pozdrawiam

0

Moze zamiast JFrame uzyc JDialog?

0

No ostatecznie to addWindowFocusListener i minimalizowac okna po kolei ale ja jednak polecam JDialog.

0

Dzieki za zainteresowanie. JDialog odpada bo chce na tych ramkach umiescic kilka wiekszych elementów. Czyli rozumiem ze JFrame nie ma wlasciwosci typu "Ma przodka" lub "otwiera sie z.. " :-)?

0

No nie.
Mozesz w sumie jeszcze uzyc java.awt.Window.

0

W głównym oknie umieść JDesktopPane desktop,
pozostałe okna niech będą typu JInternalFrame i dodaj je do desktopu -desktop.add(..)
pozdrawiam

0

Kawałek kodu:

public class MainDesktop extends JFrame implements ActionListener
{
    ...
    public MainDesktop()
    {
        super("Tworzenie list studenckich");
        try 
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception ex)
        {
            My.showStack(ex,10); // funkcja z mojej klasy narzędziowej
        }
        
        setLayout(new BorderLayout(2,2));

        int inset=50;
        Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(inset,inset,d.width-inset*2,d.height-inset*2);
        desktop=new JDesktopPane();
        add(desktop,BorderLayout.CENTER);
        desktop.setDragMode(JDesktopPane.LIVE_DRAG_MODE);
        
        edytor=new HtmlEditor(this);
        desktop.add(edytor);
 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }   
}
....
public class HtmlEditor extends JInternalFrame
{
     .....
}
0

Ale koledze może zależeć na tym, żeby te InternalFrame'y dały się przeciągnąć poza okno główne. A wtedy lepsze będzie dodać zwyczajny WindowListener:

WindowListener l = new WindowListener()
{
public void windowOpened(){}
public void windowClosed(){}
public void windowActivated(){}
public void windowDeactivated(){}
public void windowClosing(){}
public void windowIconified()
{
oknoPochodne.setExtendedState(JFrame.ICONIFIED);
}
public void windowDeiconified()
{
oknoPochodne.setExtendedState(JFrame.NORMAL);
}
};

Wydaje mi się, że będzie proste. Jeżeli ktoś zauważy błąd w powyższym kodzie to proszę poprawić ;)

0

Na pierwszy rzut oka błędów jest 9:

  • dwukrotnie użyty nieznany identyfikator oknoPochodne,
  • wszystkie metody mają błędną sygnaturę: winno być np.
  public void windowOpened(WindowEvent e){}

1 użytkowników online, w tym zalogowanych: 0, gości: 1