Zugriff von einem Applet auf ein Fenster

Status
Nicht offen für weitere Antworten.

kaspar

Mitglied
Unten stehender Code erstellt ein Spielfeld mit z.B. 5x5 Karten; wird eine Karte angeklickt, so werden alle angrenzenden Karten umgedreht, d.h. sie verändern die Farbe, die angeklickte Karte verändert die Farbe nicht.

Nun soll ein Protokollfenster mit identischer Spielfläche erstellt werden. Wird auf eine Karte im Spielfeld (Applet) geklickt, so werden im Applet die angrenzenden Karten wie oben beschrieben umgedreht. Im Protokollfenster soll hingegen die angeklickten Karten des Applets "aufgezeichnet" werden, d.h. die entsprechende Karte im Protokollfenster soll die Farbe verändern.

Das Applet funktioniert, auch konnte ich das Protokollfenster mit der Spielfläche erzeugen.

Lt. Aufgabenstellung besteht die Lösung aus flexiblem EventHandling und Interfaces.

----------------------------------------------------------------------------------------------------------------------------------
Wenn ich jetzt ein Feld im Applet anklicke, so minimiert sich das Protokollfenster. Gibt es eine Möglichkeit, dass das Applet und das Protokollfenster offen bleibt?

Wie kann ich die Karte im Protokollfenster zum "Umdrehen" bringen, wenn ein Klick auf ein Feld im Applet erfolgt?

Benötige ich eine zusätzliche MosaikCanvas-Klasse für die Felder im Protokollfenster, oder kann ich die bestehende MosaikCanvas-Klasse inkl. MosaikIF-Interface dafür verwenden?

Wo muss das Umdrehen der Karten im Protokollfenster angesteuert werden? Im MosaikEventHandler? Muss hierfür dann die MosaikModel-Klasse erweitert werden?

Danke für die Hilfe.

Walli
-------------------------------------------------------------------------------------------------------------------------------------

Code:
import java.awt.Color;
import java.applet.Applet;

public class Mosaik extends Applet
{
  private Color farbeRueck, farbeVor;
  private int raster; //Rastermaß der Spielfläche

  public void init()
  {
    resize(250,280);
    //Spielparameter
    String temp=getParameter("raster");
    raster=Integer.parseInt(temp);
    farbeRueck=new Color(230,30,50);
    farbeVor=new Color(50,210,30);
    //Spielfläche
    FarbMosaik fm=new FarbMosaik(raster,getSize().width,farbeRueck,farbeVor);
    add(fm);      
  } 
}

import java.awt.Panel;
import java.awt.Color;
import java.awt.GridLayout;

public class FarbMosaik extends Panel
{
 protected ModelIF mm;
 protected MosaikEventHandler eventHandler; 

 public FarbMosaik(int raster, int breite, Color farbeRueck, Color farbeVor)
 {
  mm=new MosaikModel(raster,raster); 
  eventHandler=new MosaikEventHandler(mm);
  setLayout(new GridLayout(raster,raster,1,1));
  int canvasBreite=breite/raster;
  for (int i=0;i<raster;i++)
  {
   for (int j=0;j<raster;j++)
   {
    MosaikCanvas mc=new MosaikCanvas (i,j,farbeRueck,farbeVor);
    mc.addMouseListener(eventHandler);
    mm.putMObj(i,j,mc);
    mc.setSize(canvasBreite, canvasBreite);
    add(mc); 
   }
  } 
 }
}

import java.awt.*;

public class MosaikCanvas extends Canvas implements MosaikIF
{
  private Color farbe, farbeRueck, farbeVor;
  public Color getFarbe() {return farbe;}
  public void setFarbe(Color inValue) {farbe=inValue;}

  private boolean seite;
  public boolean getSeite() {return seite;}
  public void setSeite(boolean inValue) {seite=inValue;}

  private int zeile, spalte;
  public int getZeile() {return zeile;}
  public void setZeile(int inValue) {zeile=inValue;}
  public int getSpalte() {return spalte;}
  public void setSpalte(int inValue) {spalte=inValue;}

  public MosaikCanvas(int zeile, int spalte, Color farbeRueck, Color farbeVor)
  {
    this.zeile=zeile;
    this.spalte=spalte;
    this.farbeRueck=farbeRueck;
    this.farbeVor=farbeVor;
    setSeite(false); //default-Wert
    setFarbe(farbeRueck); //default-Wert
  }

  public void switchSeite()
  {
    seite=!seite;
    farbe=(farbe == farbeRueck) ? farbeVor : farbeRueck;
    repaint();
  }

  public void paint(Graphics g)
  {
    g.setColor(getFarbe());
    g.fillRect(0,0,getSize().width-1,getSize().height-1);
  }
}

public interface MosaikIF
{
  public boolean getSeite();
  public void switchSeite();
  public int getZeile();
  public int getSpalte(); 
}

public class MosaikModel implements ModelIF
{
  MosaikIF [] [] mObjects;
  int zeilen, spalten;
  
  public MosaikModel(int zeilen, int spalten)
  {
    this.zeilen=zeilen;
    this.spalten=spalten;
    mObjects=new MosaikIF[zeilen] [spalten];      
  }

  public void switchNachbarn(int zeile, int spalte)
  {
    //erste Zeile: Mitte, links, rechts
    if (zeile-1 >= 0)
    {
      invert(zeile-1,spalte);

      if (spalte-1 >= 0)
        invert(zeile-1,spalte-1);

      if (spalte+1 < spalten)
        invert(zeile-1,spalte+1);
    }

    //zweite Zeile: links, rechts
    if (spalte-1 >= 0)
      invert(zeile,spalte-1);

    if (spalte+1 < spalten)
      invert(zeile,spalte+1);
    
    //dritte Zeile: Mitte, links, rechts
    if (zeile+1 < zeilen)
    {
      invert(zeile+1,spalte);

      if (spalte-1 >= 0)
        invert(zeile+1,spalte-1);

      if (spalte+1 < spalten)
        invert(zeile+1,spalte+1);
    }         
  } 

  public void invert(int zeile, int spalte)
  {
    getMObj (zeile,spalte).switchSeite();         
  }

  public void putMObj(int zeile, int spalte, MosaikIF mObj)
  {
    mObjects [zeile] [spalte]=mObj;       
  }

  public MosaikIF getMObj(int zeile, int spalte)
  {
    return mObjects [zeile] [spalte];       
  }

  public void action(int zeile, int spalte)
  {
    switchNachbarn(zeile,spalte);       
  } 
}

public interface MosaikIF
{
  public boolean getSeite();
  public void switchSeite();
  public int getZeile();
  public int getSpalte(); 
}

import java.awt.event.*;
import java.util.Hashtable; 
import java.util.Enumeration; 

public class MosaikEventHandler implements MouseListener
{
  private int zeile, spalte;
  ModelIF mm;
  
  Hashtable modelTable;
  Object key;
    
  public MosaikEventHandler(ModelIF mm)
  {
    modelTable=new Hashtable();
    key=new Integer(mm.hashCode());
    modelTable.put(key,mm);
  }

  public void addModel(ModelIF model)
  {
    key=new Integer(model.hashCode());
    modelTable.put(key,model);  
  }

  public ModelIF removeModel(ModelIF model)
  {
    key=new Integer(model.hashCode());
    return (ModelIF)modelTable.remove(key); 
  }

  public void mouseClicked(MouseEvent me) {}
  public void mouseEntered(MouseEvent me) {}
  public void mouseExited(MouseEvent me) {}
  public void mousePressed(MouseEvent me) {}
  public void mouseReleased(MouseEvent me) 
  {
    zeile=((MosaikIF)me.getSource()).getZeile();
    spalte=((MosaikIF)me.getSource()).getSpalte();
    Enumeration enum=modelTable.keys();
    while (enum.hasMoreElements())
    {
      key=enum.nextElement();
      ((ModelIF)modelTable.get(key)).action(zeile,spalte); //löst Umdrehen der angrenzenden Karten im Applet aus
    }
  }
}

//Änderung von Mosaik und Hinzufügen der FrameMosaik-Klasse für das Erzeugen des Protokollfensters mit 
//Spielfeld im Protokollfenster
import java.awt.Color;
import java.applet.Applet;
import java.awt.Frame;

public class Mosaik extends Applet
{
  private Color farbeRueck, farbeVor;
  private int raster; //Rastermaß der Spielfläche

  public void init()
  {
    Frame frame = new Frame();
    frame.setTitle("Protokollfenster");
    frame.setSize(255, 285);
    frame.setLocation(400, 150);
    frame.setVisible(true);
    frame.show();
    
    resize(250,280);
    //Spielparameter
    String temp=getParameter("raster");
    raster=Integer.parseInt(temp);
    farbeRueck=new Color(230,30,50);
    farbeVor=new Color(50,210,30);
    
    //Spielfläche
    FarbMosaik fm=new FarbMosaik(raster,getSize().width,farbeRueck,farbeVor);
    FrameMosaik fm1=new FrameMosaik(raster,getSize().width,farbeRueck,farbeVor);
    frame.add(fm1);
    frame.show();
    add(fm);
  }
}

import java.awt.Panel;
import java.awt.Color;
import java.awt.GridLayout;

public class FrameMosaik extends Panel
{
 protected ModelIF mm;
 
 public FrameMosaik(int raster, int breite, Color farbeRueck, Color farbeVor)
 {
  mm=new MosaikModel(raster,raster); //evtl. ModelIF statt MosaikModel S.48
  //eventHandler=new MosaikEventHandler(mm);
  setLayout(new GridLayout(raster,raster,1,1));
  int canvasBreite=breite/raster;
  for (int i=0;i<raster;i++)
  {
   for (int j=0;j<raster;j++)
   {
    FrameCanvas mc=new FrameCanvas (i,j,farbeRueck,farbeVor);
    //mc.addMouseListener(eventHandler);
    mm.putMObj(i,j,mc);
    mc.setSize(canvasBreite, canvasBreite);
    add(mc); 
   }
  } 
 }
}

Roar: Codetags
 
U

Unregistriert

Gast
Hallo,

ich arbeite gerade an dem Lernheft JAV05 mit der Fallstudie "Applet-Programmierung". Könntest du mir deine Lösung mit dem Protokollfenster freundlicherweise zusenden. Ich muss bis zum 31.10.2009 alle Studienhefte abgegeben haben. Vielen Dank.

Viele Grüße

Marcus
 

L-ectron-X

Gesperrter Benutzer
Das Fernstudium solltest du schon selbst durchziehen, ansonsten sind gute Noten nicht gerechtfertigt.
Der Thread ist im Übrigen bereits mehr als 4 Jahre alt...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
B Zugriff auf JTextPane in einem anderen Panel Java Basics - Anfänger-Themen 2
L Kein Zugriff auf Listen in einem Array Java Basics - Anfänger-Themen 2
G kein Zugriff auf eine Klasse in einem Unterordner Java Basics - Anfänger-Themen 11
N JBuilder: Zugriff auf String von einem anderen Frame Java Basics - Anfänger-Themen 6
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben