Allmänt:
Uppgiften går i huvudsak ut på att visa:
Hur man gör program som kan startas från ett HTML-dokument i en browser. Vi tittar först på program som kallas för äpplen.
Det är mycket viktigt att man kan trådning och JAR-filer bra så denna uppgift innehåller även dessa moment:
-
Vi tittar på hur man gör när man konstruerar ett enkelt multi-trådat program. Det finns två sätt att göra en klass trådad på och vi övar här på båda. Det är mycket viktigt att man förstår båda dessa sätt bra eftersom några av de efterföljande uppgifterna är trådade. Trådning är en mycket vanlig och kraftfull teknik.
-
Vi tittar på hur man kan packa ihop och komprimera en mängd CLASS-filer (och ibland även andra typer av filer som bild-filer med mera) med jar-verktyget.
Uppgift:
Gör ett äpple (med ett grafiskt användargränssnitt) som har två knappar och en text-area. Respektive knapp ska ha texterna "Aktivera utskrift från tråd 1" och "Aktivera utskrift från tråd 2". Använd tre klasser:
-
En klass för äpplet (och det grafiska gränssnittet).
-
En klass för tråd 1. Denna klass ska ärva från klassen Thread.
-
En klass för tråd 2. Denna klass ska inte ärva från klassen Thread utan implementera gränssnittet Runnable.
Respektive tråd ska i en loop i run-metoden kunna skriva ut meddelandet Utskrift från tråd 1 och Utskrift från tråd 2 i programmets text-area. Utskriften ska göras en gång per sekund.
Vid tryck på den ena knappen ska tråd 1 aktiveras och texten på knappen ska ändras till "Deaktivera utskrift från tråd 1". Ett tryck till på samma knapp ska deaktivera tråd 1 (det vill säga stoppa tråd 1 helt) och texten på knappen ska återställas till "Aktivera utskrift från tråd 1". Motsvarande gäller för den andra knappen men för tråd 2.
De färdiga CLASS-filerna ska packas i en JAR-fil och HTML-dokumentet som hör till äpplet ska använda denna JAR-fil.
Tips:
Vid implementering av gränssnittet Runnable så måste man deklarera och initiera en variabel för tråden:
Thread tread = new Thread(this);
Man måste givetvis även starta tråden (på ett lämpligt ställe) med:
tread.start();
Läs i API-beskrivningen under java.lang.Thread om varför stop-metoden med flera inte fungerar. Där finns bra tips på hur man stoppar en tråd.
Man får automatisk scrollning av en JTextArea med hjälp av en JScrollPane och lite annan kod:
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
textArea.append("T1 running\n");
textArea.setCaretPosition(textArea.getText().length());
Man måste göra ett nytt trådat objekt vid varje omstart, det går alltså inte att enbart köra start-metoden igen.
Resultat:
Javakoden för Uppgift1a
|