Java: Popup-meny för typsnittsval?

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Höganäs
  • 2002-11-28 19:22

Hur skapar man (jag) en popup-meny för val av ex typsnitt till en text som sedan ritas om antingen när

1. en OK-knapp trycks
2. valet är gjort, ritas om direkt.

Hoppas frågan går att förstå...

Jag använder "ActionListener" för att "repainta" det hela.

Vore också bra med tips om hur jag gör en snygg funktion för att ändra typsnittstorlek!

/Tacksam nybörjare...



[ 28 November 2002, 22:51: Meddelandet ändrat av: Micke F ]

  • Medlem
  • Höganäs
  • 2002-11-28 22:51

Ingen?

ActionListener? Vad är det?

Det du kan göra är att via Javascript ändra en Stillmall (CSS). Eller vad det något annat du hade tänkt dig?

Kör du med t.e.x DreamWeaver eller Golive?

  • Medlem
  • Höganäs
  • 2002-11-29 09:12

Jag ska försöka förklara bättre...

Jag ska alltså göra en Applet där det ska gå att ändra typsnitt, storlek och stil på en text.
Jag är nyfiken på hur det kan göras med hjälp av en popup-meny.

Visst går det med JavaScript, men går man en Javakurs och har en lab att lämna in så har man...

  • Medlem
  • 2002-11-29 17:27

Ok, eftersom du inte har angett om du använder AWT, Swing eller något annat grafiskt bibliotek så får det bli två försök till svar (ett AWT och ett SWING).

1. AWT

Först måste du instantiera en PopupMenu.

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">
PopupMenu menu = new PopupMenu();</pre>

Sedan lägger du helt enkelt till de alternativ i menyn du vill ha, exempelvis:

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">
menu.add(new MenuItem("alt 1"));
menu.add(new MenuItem("alt 2"));</pre>

Givetvis bör du koppla ett ActionListener objekt till varje MenuItem också...

Därefter lägger du till den i den Component du ska ha den.

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">
dinKomponent.add(menu);</pre>

Sist, men inte minst, måste du ordna så att den visas när någon "popupklickar" (en plattformsberoende sak...). Det gör du enklast genom att lägga till en muslyssnare och anropa show i PopupMenu om musknappen som trycktes är en så kallad "popupTrigger":

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">
dinComponent.addMouseListener(
new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
if(e.isPopupTrigger())
{
menu.show(dinKomponent,
e.getX(),e.getY());
}
}

/* etc ... */
}

</pre>

2. Swing

I Swing är det en JPopupMenu som skall instantieras istället, liksom det är JMenuItem istället för MenuItem som skall läggas till (läs i API:n). Fast man kan också använda sig av så kallade "Actions" se exempelvis AbstractAction. I övrigt är det mer eller mindre likadant som i AWT:n.

(Mitt första inlägg här på 99mac, efter ett par månaders tyst betraktande förresten ).

  • Medlem
  • Höganäs
  • 2002-11-30 10:52

Tack Tord!

Ska testa ovanstående under helgen!

Citat:

quote:Sist, men inte minst, måste du ordna så att den visas när någon "popupklickar" (en plattformsberoende sak...). Det gör du enklast genom att lägga till en muslyssnare och anropa show i PopupMenu om musknappen som trycktes är en så kallad "popupTrigger":

På vilket sätt plattformsberoende?

/M

[ 30 November 2002, 10:52: Meddelandet ändrat av: Micke F ]

  • Medlem
  • 2002-11-30 12:49
Citat:

quote:
På vilket sätt plattformsberoende?

På vissa system högerklickar man för att få fram en popupmeny medan man på andra system kanske gör på något annat sätt. Hursomhelst, om man använder sig av metoden "isPopupTrigger" så kommer popupmenyn att funka även på system som inte har en "högermusknapp".

Såg nu att du också undrade om hur man kan ändra typsnittsstorlek. I Java är fonter uppbyggda av tre saker (familj, stil och storlek). En funktion för att förändra typsnittstorlek behåller lämpligen familj och stil attributen då. Ex:

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">Font f =
new Font("Helvetica",
Font.PLAIN,
12);

Font nyF =
new Font(f.getFamily(),
f.getStyle(),
f.getSize()+10);</pre>

Där nyF alltså är 10 punkter större än f.

Det är också möjligt att få en lista på existerande "familjer" med metoden getFontList i Toolkit klassen...

1
Bevaka tråden