Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-07-16 16:22:43

  Lorenzo - Moderator

Lorenzo
Moderator
Zarejestrowany: 2005-12-23

[SOLVED][GTK][JAVA] Stworzenie okna w oknie (cos a'la MDI)

Mam okno nadrzędne[1] posiadające wewnątrz widget typu scrolledwindow, do którego potrzebuje załadować (najlepiej) całe okno, lub choćby jeden vbox z okna podrzędnego[2].

Każde z tych okien przynależy do obiektów typu libglade, definiowanych w odpowiednich klasach[3] i [4]

Próbowałem w konstruktorze obiektu okna nadrzędnego tworzyć nowy obiekt okna podrzędnego, następnie dodawać potomków do scrolledwindow przy pomocy funkcji add(widget) - jednak piszczał mi o potrzebie reparent (przeojcowania??) widgetów - zajrzałem na gtk FAQ - jednak efektów nie uzyskałem. Jeszcze kilka guseł odprawiałem, lecz nic wymiernego nie dostałem ;/

Pliki glade'a z projektami okien:
[1] - http://fatcat.ftj.agh.edu.pl/~przyboro/other/jagabase/oldzam.glade
[2] - http://fatcat.ftj.agh.edu.pl/~przyboro/other/jagaba … subform.glade

Źródła:
[3] - http://fatcat.ftj.agh.edu.pl/~przyboro/other/jagabase/OldZam.java
[4] - http://fatcat.ftj.agh.edu.pl/~przyboro/other/jagabase/ZamSubForm.java

//EDIT:
Ten upał mi nie służy...;/
Osiągnąłem postęp. Zrzutowałem widget typu GtkVBox na zmienną typu vbox i teraz udało sie przeparentowac. Tylko jeszcze nie wygląda to załadnie ;-)

//EDIT2:
Robimy tak:
Okno nadrzędne:

Wewnątrz kontenera typu GtkScrolledWindow umieszczamy GtkViewport a w nim GtkVBox.
widget GtkViewport nazwijmy viewport1, a box'a - vbox1.

W oknie podrzędnym interesujący nas widget typu GtkVBox nazwijmy vbox2.

Kod konstruktora obiektów klasy odpowiedzialnej za okno nadrzędne (odpowiednie zmienne sa wczesniej zadeklarowane oczywiście):

Kod:

_scrolledWindow = (ScrolledWindow) _gladeWindow.getWidget("scrolledWindow");
_viewport1 = (Viewport) _gladeWindow.getWidget("viewport1");
_obiektPodrzedny = new Podrzedny[10];
_vbox1 = new VBox[10];
for(int i=0;i<10;i++)
    {
        //rzutujemy widget na zmienną za niego odpiewiedzialną
        _vbox1[i] = (VBox) _gladeWindow.getWidget("vbox1");
        //dodajemy widgeta potomnego do viewport
        _viewport1.add(_vbox1[i]);
        //tworzymy nowy obiekt klasy Podrzedny
        _obiektPodrzedny[i] = new Podrzedny();
        //przeparentowanie (czy jak to zwią ;-) ) - musi być
        _obiektPodrzedny[i]._vbox2.reparent(_vbox1[i]);
        //dodanie widgeta potomnego do viewport
       _viewport1.add(_obiektPodrzedny[i]._vbox2);
     }

Wiem, że pokrętnie opisane ale chodzi o to by z tych dwóch okien
uzyskać takie jedno ;-)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)