Hallo,
ich sitze an einem (Applet-)Spiel bei dem es um das Umdrehen von MosaikKarten geht.
Es gibt ein Raster, wenn man auf eins der Rasterelemente klickt
werden die Nachbarfelder umgedreht. Das funktioniert alles recht gut.
Jetzt möchte ich einen Kontrollkasten (Frame-Objekt) hinzufügen, der zunächst nochmals
die gleichen Elemente enthält. Hier soll dann in einem zweiten Schritt einfach die
angeklickten Elemente selbst angezeigt werden.
Jetzt habe ich das Problem, dass Mosaikteile nicht als Quadrate sondern
als Rechtecke dargestellt werden. Auch wenden die Mosaikteile nicht vollständig geladen.
Im Grunde genommen ist das Frame-Fenster nur eine Modifikation des großen Appletfensters,
nicht anderes.
Wo könnte hier der Fehler sein? Für eine Hilfestellung wäre ich dankbar.
Merci!
Hier ist die Klasse, die die Mosaikteile erstellt:
Hier ist die Panel-Objekt Klasse: FarbMosaik, welches die Mosaikteile erzeugt:
An Anlehnung an FarbMosaik habe ich nun die Klasse ProtokollFenster.java geschrieben. Analog
zum Canvas-Objekt :
ich sitze an einem (Applet-)Spiel bei dem es um das Umdrehen von MosaikKarten geht.
Es gibt ein Raster, wenn man auf eins der Rasterelemente klickt
werden die Nachbarfelder umgedreht. Das funktioniert alles recht gut.
Jetzt möchte ich einen Kontrollkasten (Frame-Objekt) hinzufügen, der zunächst nochmals
die gleichen Elemente enthält. Hier soll dann in einem zweiten Schritt einfach die
angeklickten Elemente selbst angezeigt werden.
Jetzt habe ich das Problem, dass Mosaikteile nicht als Quadrate sondern
als Rechtecke dargestellt werden. Auch wenden die Mosaikteile nicht vollständig geladen.
Im Grunde genommen ist das Frame-Fenster nur eine Modifikation des großen Appletfensters,
nicht anderes.
Wo könnte hier der Fehler sein? Für eine Hilfestellung wäre ich dankbar.
Merci!
Hier ist die Klasse, die die Mosaikteile erstellt:
Java:
MosaikCanvas:
import java.awt.*;
public class MosaikCanvas extends Canvas implements MosaikIF {
private Color farbe, farbeRueckseite, farbeVorderseite;
private boolean vorderseite = false;
private int zeile,spalte;
private Point point;
public Color getFarbe() {
return farbe;
}
public void setFarbe(Color inValue) {
farbe = inValue;
}
public boolean isVorderseite() {
return vorderseite;
}
public int getZeile() { return zeile;}
public int getSpalte() { return spalte;}
public MosaikCanvas(int zeile, int spalte, Color farbeRueckseite, Color farbeVorderseite) {
this.zeile = zeile;
this.spalte = spalte;
this.farbeRueckseite = farbeRueckseite;
this.farbeVorderseite = farbeVorderseite;
this.setFarbe(farbeRueckseite);
point = new Point(zeile,spalte);
}
public void switchSeite() {
vorderseite =! vorderseite;
if(farbe == farbeRueckseite) { farbe = farbeVorderseite; }
else { farbe = farbeRueckseite; }
repaint();
}
public void paint (Graphics g) {
g.setColor(getFarbe());
g.fillRect(0,0,getSize().width,getSize().height);
}
}
Hier ist die Panel-Objekt Klasse: FarbMosaik, welches die Mosaikteile erzeugt:
Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
public class FarbMosaik extends Panel{
private ModelIF model;
private MosaikEventHandler eventHandler;
public MosaikEventHandler getEventHandler() {
return eventHandler;
}
public FarbMosaik(int raster, int breite, Color farbeRueckseite, Color farbeVorderseite) {
model = new MosaikModel(raster,raster);
eventHandler = new MosaikEventHandler(model);
this.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,farbeRueckseite,farbeVorderseite);
mc.addMouseListener(eventHandler);
mc.setSize(canvasBreite,canvasBreite);
model.putObj(i,j,mc);
this.add(mc);
}
}
}
}
An Anlehnung an FarbMosaik habe ich nun die Klasse ProtokollFenster.java geschrieben. Analog
zum Canvas-Objekt :
Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Frame;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
public class ProtokollFenster extends Frame {
int size = 300;
public ProtokollFenster()
{
setTitle("Kontrollfenster"); // Fenstertitel setzen
setSize(size,size); // Fenstergröße einstellen
setVisible(true); // Fenster (inkl. Inhalt) sichtbar machen
}
public void createMosaik(int raster, Color farbeRueckseite, Color farbeVorderseite)
{
setLayout(new GridLayout(raster,raster,1,1));
int canvasBreite = size/raster;
for(int i=0; i<raster; i++) {
for(int j=0; j<raster; j++) {
MosaikCanvas mc = new MosaikCanvas(i,j,farbeRueckseite,farbeVorderseite);
mc.setSize(canvasBreite,canvasBreite);
this.add(mc);
}
}
}
}