webForumDet fria alternativet

popupmeny strul...

1 svar · 420 visningar · startad av malun

malunMedlem sedan okt. 200122 inlägg
#1

Jag har problem med en popupmeny. Jag vill inte att den skall kunna hamna utanför skärmen. Därför jag gör en kontroll och ändrar på koordinaterna om det behövs innan jag placerar ut min popupmeny.

Problem är att det inte funkar första gången. Vid första klicket efter det att programmet har startat så kan menyn hamna utanför skärmen. Men efter första klicket funkar det som jag har tänkt mig... Vad kan vara fel?

	jList1.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent me) {
            if (SwingUtilities.isRightMouseButton(me)){
              int x=me.getX();
              int y=me.getY();
              Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
              Dimension menuSize = popupMenu.getSize();

              if((int)screenSize.getWidth() < (x+menuSize.getWidth()+frame.getX()))
                  x=(int)(x-menuSize.getWidth());
              if((int)screenSize.getHeight() < (y+menuSize.getHeight()+frame.getY()+80))
                  y=(int)(y-menuSize.getHeight());

              popupMenu.show(jList1, x, y);
            }
         }
      });
malunMedlem sedan okt. 200122 inlägg
#2

Jag har löst problemet!
Kruxet var att menyn inte "visste" hur stor den var innnan den hade visats en gång. Detta resulterade i att menuSize.getWidth() och menuSize.getHeight() var lika med noll, vilket innebar att uträkningen för kontrollen i ifsatsen blev fel första gången.

Jag gjorde en ful-lösning genom att lägga till dom groteska raderna:
popupMenu.setVisible(true);
popupMenu.setVisible(false);
i Konstruktorn för klassen.

Hoppas detta svaret kan hjälpa någon annan i nån gång.

/malun

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb