webForumDet fria alternativet

popupmeny strul...

Java

1 svar · 422 visningar · startad av malun

Medlem sedan okt. 200122 inlägg
Frågan#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);
            }
         }
      });
Medlem 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

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)