Visning af appletter i brugergrænsefladen

greenspun.com : LUSENET : Grundlæggende Programmering E2000 : One Thread

I eksempel programmet StudieApplet bliver alle meddelelser skrevet i et tekstfelt i appletten. Vi har lavet en applet med nogle søgefelter. Hvis der så skal skrives en meddelelse eller status af søgning vil vi gerne have at hele appletten erstattes med en ny applet eller et tekstfelt, hvor resultatet udskrives. Hvordan får man browseren til at skifte mellem de to appletter og/eller fjerne søgeappletten så resultatet blot kan skrives i et tekstfelt?

Venlig hilsen Mette

-- Mette Bruhn-Pedersen (bruhn@inbound.dk), December 16, 2000

Answers

Response to Visning af appletter i brugergrænsefladen

Man kan godt få en applet til at kalde en anden, men det er en dårlig løsning på dit problem.

I stedet skal du bruge CardLayout, som består i et antal containere (f.eks. Paneler) der vises på det samme sted og kan udskiftes under programstyring, f.eks. fra en knaplytter. CardLayout er ikke ordentligt beskrevet i lærebogen, men kig på beskrivelsen af Javas klasser og metoder på nettet, og på nedenstående eksempel (som også bliver lagt på projektsiden).

// Eksempel på brug af CardLayout * 2000-12-14
// Start programmet og tryk retur for at skifte mellem de tre `cards'
 
import java.awt.*;
import java.io.*;
 
public class CardLayoutTest {
  public static void main(String[] args) throws IOException {
    Frame f = new Frame("CardlayoutTest");
    CardLayout cl = new CardLayout();
    f.setLayout(cl);
    Button br = new Button("Kort 1");
    br.setBackground(Color.red);
    f.add(br, "r");
    Button bg = new Button("Kort 2");
    bg.setBackground(Color.green);
    f.add(bg, "g");
    Button bb = new Button("Kort 3");  
    bb.setBackground(Color.blue);
    f.add(bb, "b");
    cl.show(f, "r");            // Skift til et navngivet kort
    f.pack(); f.show();
    for (;;) {
      System.in.read();         // Vent til der trykkes Enter
      cl.next(f);               // Skift til næste kort (cyklisk)
    }
  }
}  


-- Peter Sestoft (sestoft@dina.kvl.dk), December 16, 2000.

Moderation questions? read the FAQ