02 - Rita text

Rita text



I den här delen ska jag visa hur man kan rita text i sitt fönster. Till skillnad från consoleprogram (textprogram som körs i DOS-liknande miljö) där man skriver texten på rader så kan man här välja exakt vart på skärmen man ska rita ut sin text. Innan vi kan börja rita in text måste vi dock göra vissa ändringar i våran kod.

Som jag nämnde i förra delen så har Java delat in de klasser som man får som standard i olika grupper, t ex java.applet.Applet. För att slippa skriva långa namn som det där kan man skriva en rad som tar in alla klasser i en speciell kategori. Detta görs genom att man skriver imort kategori.underkategori.* ungefär. Här är ett litet exempel:

  1.  
  2. import java.applet.*;
  3.  
  4. public class NewApplet extends Applet {
  5. public void init() {
  6. }
  7. }


Vi importerar alltså alla klasser som ligger i java.applet genom att skriva import java.applet.*; När vi gjort detta kan slipper vi i fortsättningen skriva saker som java.applet.Applet och kan bara skriva Applet istället. Se rad 3 i koden och jämför med den gamla koden.

Nu när vi ska rita saker i våran applet behöver vi använda oss av en klass som heter java.awt.Graphics. Igen har vi ett långt namn som man kan slippa genom att importera lite. Lägg till den här raden efter den första import-raden i koden:
  1.  
  2. import java.awt.*;


Nu kommer vi till en del som kan vara lite svårbegriplig om man är helt ny på programmering. Vi ska skapa en till metod i vårat program för att kunna rita. Metoden heter paint. Det som är lite konstigt här är att vi ska skriva lite kod emellan () som kommer efter metodens namn. Det som vi ska skriva in emellan parenteserna har vi inte gått igenom. Mellan parenteserna står det EURGraphics gEUR. Det betyder att vi nu skapar ett nytt objekt som heter g, objektet skapas med hjälp utav klassen Graphics. Det där var troligtvis helt obegripligt, men det kan vara bra för dig att ha hört det senare då vi ska gå igenom objekt och klasser.

Om man lägger till våran nya metod paint så ser koden för programmet ut såhär:
  1.  
  2. import java.applet.*;
  3. import java.awt.*;
  4.  
  5. public class NewApplet extends Applet {
  6. public void init() {
  7. }
  8. public void paint(Graphics g) {
  9. }
  10. }


Efter att vi avslutar metoden init() så lägger vi alltså till den nya metoden paint, och som jag sa tidigare så har vi den här gången en del text mellan parenteserna.

Vad ska nu det där g-objektet vara bra för kanske du undrar, och svaret är att g-objektet har en metod som låter oss skriva text i våran applet. g-objektet är alltså också en klass med metoder, precis i koden vi sitter och skriver. Mer om objekt och sådant senare.

Om du ställer markören efter public void paint(Graphics g) { och trycker på <ENTER> så hamnar du förstås på en ny rad. Och din muspekare hoppar också in en del från kanten, det är för att koden ska bli mer lättläslig och så att man förstår vilken kod som tillhör vad.

Skriv nu ett g och sedan en punkt och vänta lite. Det borde inom några sekunder komma upp en lista med text. Alla saker i den här listan är metoder som objektet g har. Fortsätt att skriva drawString (var noga med stor bokstav i String, var alltid noga med stor bokstav).
Nu borde det komma upp en liten ruta som förklarar vad drawString gör och vad man ska skriva mellan parenteserna. DrawString(String, int, int); borde det stå. String betyder att här ska man ange text, int betyder att man ska ange ett nummer. Om vi anger en text och sedan två nummer som det står så får vi en rad som ser ut såhär ungefär:
  1.  
  2. g.drawString(”Hej”,50,50);

Detta betyder att vi ritar ut texten EURHejEUR på koordinaterna 50, 50 (räknat från övre vänstra hörnet). När du skrivit in den här koden kan du trycka Shift+F6. Nu byggs och startas ditt program, och har du skrivit rätt kommer det upp ett vitt fönster med texten EURHejEUR i.
Experimentera mycket här, testa att ange andra koordinater och se vart texten hamnar.
Du kan även testa att skriva g.drawString(EUR); två gånger efter varandra. Om du anger olika koordinater så borde du få upp två texter.

Man kan även rita andra saker än text. Nu ska du få se hur man ritar en linje. Det på ett mycket liknande sätt. Fast den här gången heter metoden drawLine och mellan parenteserna ska du skriva in fyra nummer. De fyra numrena är koordinaterna för början och slutet av linjen. Det första numret är den första x koordinaten, det andra numret är den första y koordinaten, det tredje numret är den andra x koordinaten och det sista numret är den andra y koordinaten. Här är en bit kod som ritar ett sträck under en text:
  1.  
  2. import java.applet.*;
  3. import java.awt.*;
  4.  
  5. public class NewApplet extends Applet {
  6. public void init() {
  7. }
  8. public void paint(Graphics g) {
  9. g.drawString("Hej",50,50);
  10. g.drawLine(50, 55, 70, 55);
  11. }
  12. }

Här är en förklarande bild om du inte förstått hur man ska ange de olika koordinaterna:

Anstånden mäts alltså i pixlar från övre vänsta hörnet.

Nu kan du leka ännu mera! Rita sneda streck, gör fyrkanter, rita en gubbe eller vad som helst. Fortsätt så länge du tycker att det är kul och du lär dig något.

Om du skriver g. Och väntar till listan kommer upp så hittar du ännu flera metoder för att rita ut saker, t ex drawRect som ritar en rektangel.

Det var allt för den här delen!

Källa: http://blinkenlights.se/