Odmalowywanie menu i paneli w Javie

0

Konia z rzędem temu kto powie dlaczego identyczne j2sdk i netbeansy (identyczne numery) pod linuksem i windowsem zachowują się zupełnie inaczej. Ten sam program *.java pod linuksem działa szybko i tak jak według mnie powinien, natomiast pod windowsem są duże problemy z odświeżaniem paneli i menu (zarówno główne i podręczne). Metoda repaint() dla panelu roboczego działa bez zarzutu, ale sen z powiek spędzają mi menu i panele z przyciskami, które często wyświetlaja się bez itemów i bez ikon. Powiedzcie co może być przyczyną i jak ewentualnie to rozwiązać, bo ten program musi działać pod Windowsem! I na koniec jeszcze jeden detal który może Was na coś naprowadzi. W momencie uruchomienia programu pod Windowsem przycisk na pasku zadań pojawia się z dużym opóźnieniem nawet 4sekundowym.

0

Stosowales jakies niekonwencjonalne tricki zwiazane na przyklad z look and feel ?
Przedebaguj go i zobacz na ktorej instrukcji, instrukcjach najwiecej mysli.

0

trudno mówić tu o jakimś długim myśleniu nad czymś dlatego że JPopupMenu jest wyświetlane tylko przy użyciu tego polecenia:

public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3){
jpop.setLocation(e.getX(), e.getY()+30);
jpop.setVisible(true);
}
}

więc jak widzisz oprócz wyświetlenia menu nic się nie dzieje

0

Chodzilo mi o te 4sekundy zanim pokaze sie zadanie na pasku ... (mozliwe ze ci vm dosc wolniutko wstaje...).
Co to popupa to czemu nie standardowy sposob :

if(e.isPopupTrigger())
{						{       
jpop.show(e.getComponent(), e.getX(), e.getY());
}
0

znalazłem już tego buga

w metodzie paint() wywoływałem własną metodę zmieniająca rozmiar panela:
void rozmiar(int i, int j){
this.setPreferredSize(new java.awt.Dimension(i, j));
this.setSize(i, j);
}

jak wykomentuję wywołania tej metody popup działa świetnie, ale niestety ze zmiany wielkosci panela nici. Metoda rozmiar(int, int) działa tylko wtedy jeśli wygląda tak jak powyżej.
Jeśli wykomentuję drugą linijkę ...setSize...->popup dobrze->brak zmiany rozmiaru panela
Jeśli wykomentuję pierwszą linijkę ...setPreferredSize...->popup źle->brak zmiany rozmiaru panela
Jeśli nic nie wykomentuję->popup źle-> zmiana panela TAK

0

Ty mi powiedz lepiej co kombinujesz i po co to jest.
Zwykle setSize(blabla) bez odmalowywania, bez repainta, i nie w paincie wystarczy aby zmienic rozmiar panela oraz aby te zmiany byly widoczne - na przyklad po kliknieciu na button jakis.

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