Speicherung fon Zeile und Spalte

Status
Nicht offen für weitere Antworten.

Christoph veit

Aktives Mitglied
Hallo erst mall
Ich habe eine aufgabe in meinem studium
Hier ist mall mein Brogram.
Java:
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.applet.Applet;
public class Mosaik extends Applet implements SteuerIF
{
	private SraristikModel statistik;
	private int raster ;
	private String bildName;
	private Image image ;
	private BildMosaik bm;
	private FarbMosaik fm;
	private VorschauCanvas vorschauBild;
	private boolean zuletztBield;
	private Color farbeRueckseite;
	private Color farbeVorderseite;
	private Component steuerPanel;
	public void init()
	{
		String temp = getParameter("raster");
		try
		{
			raster = Integer.parseInt(temp);
		}
		catch(NumberFormatException nfe)
		{
			raster=4;
			System.out.println("Raster auf default ="+raster+" gesetzt.");
		}
	        statistik = new StatistikModel();
	        fm.getEventHandler().addModel(satistik);
	        bildName =getParameter("bildName");
		    farbeRueckseite = new Color(230,30,50);
		    farbeVorderseite = new Color(50,210,30);
			image = this.getImage(getCodeBase(),bildName);
			image = ImageHandler.trackImage(image,this);
			bm = new BildMosaik(raster,farbeRueckseite,image);
			vorschauBild = new VorschauCanvas(image);
			add(vorschauBild);
			steuerPanel = new SteuerPanel(this);
			add(steuerPanel);
		}
		public void startGame(int raster ,boolean modus)
		{
			if(vorschauBild != null)
			{
				remove(vorschauBild);
				vorschauBild = null;
			}
			else
			{
				if(zuletztBield)
				remove(bm);
				else
				remove(fm);
			}
			if(modus)
			{
				bm = new BildMosaik(raster,farbeRueckseite,image);
				add(bm);
				zuletztBield = true;
			}
			else
			{
				fm = new FarbMosaik(raster,image.getWidth(this),farbeRueckseite,farbeVorderseite);
				add(fm);
				zuletztBield = false;
			}
			add(steuerPanel);
			validate();
		}
		public void resetGame()
		{
			validate();
		}
		public void destroy
		{
			System.out.println(statistik.getStatistikInfo());
		}
	}

import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.applet.Applet;
public class Mosaik extends Applet implements SteuerIF
{
	private SraristikModel statistik;
	private int raster ;
	private String bildName;
	private Image image ;
	private BildMosaik bm;
	private FarbMosaik fm;
	private VorschauCanvas vorschauBild;
	private boolean zuletztBield;
	private Color farbeRueckseite;
	private Color farbeVorderseite;
	private Component steuerPanel;
	public void init()
	{
		String temp = getParameter("raster");
		try
		{
			raster = Integer.parseInt(temp);
		}
		catch(NumberFormatException nfe)
		{
			raster=4;
			System.out.println("Raster auf default ="+raster+" gesetzt.");
		}
	        statistik = new StatistikModel();
	        fm.getEventHandler().addModel(satistik);
	        bildName =getParameter("bildName");
		    farbeRueckseite = new Color(230,30,50);
		    farbeVorderseite = new Color(50,210,30);
			image = this.getImage(getCodeBase(),bildName);
			image = ImageHandler.trackImage(image,this);
			bm = new BildMosaik(raster,farbeRueckseite,image);
			vorschauBild = new VorschauCanvas(image);
			add(vorschauBild);
			steuerPanel = new SteuerPanel(this);
			add(steuerPanel);
		}
		public void startGame(int raster ,boolean modus)
		{
			if(vorschauBild != null)
			{
				remove(vorschauBild);
				vorschauBild = null;
			}
			else
			{
				if(zuletztBield)
				remove(bm);
				else
				remove(fm);
			}
			if(modus)
			{
				bm = new BildMosaik(raster,farbeRueckseite,image);
				add(bm);
				zuletztBield = true;
			}
			else
			{
				fm = new FarbMosaik(raster,image.getWidth(this),farbeRueckseite,farbeVorderseite);
				add(fm);
				zuletztBield = false;
			}
			add(steuerPanel);
			validate();
		}
		public void resetGame()
		{
			validate();
		}
		public void destroy
		{
			System.out.println(statistik.getStatistikInfo());
		}
	}

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.util.Hashtable;
import java.util.Enumeration;
public class MosaikEventHandler implements MouseListener
{
	Hashtable modelTable;
	Object key;
	  public MosaikEventHandler(ModelIF model)
	 	 {
	 		 modelTable = new Hashtable();
	 		 addModel(model);
	 	 }
	 	 public void addModel(ModelIF model)
	 	 {
	 		 key = new Integer(model.hashCode());
	 		 modelTable.put(key,model);
	 	 }
	 	 public ModelIF removeModle(ModelIF model)
	 	 {
	 		 key = new Integer(model.hashCode());
	 		 return(ModelIF)modelTable.remove(key);
	     }
	    public void mouseEntered(MouseEvent me)
	 	{}
	 	public void mouseClicked(MouseEvent me)
	 	{}
	 	public void mouseExited(MouseEvent me)
	 	{}
	 	public void mousePressed(MouseEvent me)
	 	{}
	 	public void mouseReleased(MouseEvent me)
	{
		int zeile = ((MosaikIF)me.getSource()).getZeile();
		int spalte = ((MosaikIF)me.getSource()).getSpalte();
		Enumeration enum = modelTable.keys();
        while(enum.hasMoreElements())
		{
			key = enum.nextElement();
			((ModelIF)modelTable.get(key)).action(zeile,spalte);
		}
	}
}

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

public class MosaikModel implements ModelIF
{
    MosaikIF[][]mObjects;
	private int zeilen,spalten;
	public MosaikModel(int zeilen, int spalten)
	{
		this.zeilen=zeilen;
		this.spalten=spalten;
		mObjects= new MosaikIF[zeilen][spalten];
	}
	public void switchNachbern(int zeile,int spalte)
	{
		//Erste zeile
		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);
		}
		//2 Zeile
		if(spalte-1>=0)
		{
			invert(zeile,spalte-1);
			if(spalte+1< spalten)
			invert(zeile,spalte+1);
		}
		//3 Zeile
		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);
		}
	}
	private void invert(int zeile, int spalte)
	{
		mObjects[zeile][spalte].switchSeite();
	}
	public void putObj(int zeile,int spalte, MosaikIF mObj)
	{
       mObjects [zeile][spalte]=mObj;
    }
    public void action(int zeile ,int spalte)
    {
		this.switchNachbern(zeile,spalte);
	}
}

interface SteuerIF{
	public void startGame(int raster,boolean modus);
	public void resetGame();
}


import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.lang.NumberFormatException;
public class SteuerPanel extends Panel implements ActionListener
{
	Label labRaster ;
	TextField tfRaster;
	Checkbox checkBild;
	Button bStart;
	Button bReset;
	private int raster;
	private boolean mitBild;
	private SteuerIF container;
	public SteuerPanel(SteuerIF container)
	{
		this.container=container;
		setLayout(new FlowLayout());
		setFont(new Font("Dialog",Font.BOLD,12));
		labRaster = new Label("Felder je zeile und Spalte : ",Label.CENTER);
		raster = 5;
		tfRaster = new TextField(Integer.toString(raster));
		checkBild = new Checkbox("Mit Bild spilen?",true);
		bStart = new Button("Start");
		bStart.addActionListener(this);
		bReset = new Button("Reset");
		bReset.addActionListener(this);
		startKonfiguration();
	}
	public void startKonfiguration()
	{
		remove(bReset);
		add(labRaster);
		add(tfRaster);
		add(checkBild);
		add(bStart);
		tfRaster.setText(Integer.toString(raster));
		tfRaster.selectAll();
		tfRaster.requestFocus();
	}
	public void resetKonfiguration()
	{
		remove(labRaster);
		remove(tfRaster);
		remove(checkBild);
		remove(bStart);
		add(bReset);
	}
	public void actionPerformed(ActionEvent ae)
	{
		if (ae.getSource()==bStart)
		{
			try
			{
				raster= Integer.parseInt(tfRaster.getText().trim());
			}
			catch(NumberFormatException ife)
			{
				raster=5;
			}
			mitBild=checkBild.getState();
			resetKonfiguration();
			container.startGame(raster,mitBild);
		}
		if(ae.getSource()==bReset)
		{
			startKonfiguration();
			container.resetGame();
		}
	}
}


public interface ModelIF
{
	void action(int zeile , int spalte );
	void putObj(int zeile , int spalte , MosaikIF mObj);
}

import java.awt.MediaTracker;
import java.awt.Image;
import java.awt.Component;
public class ImageHandler
{
	public static Image trackImage(Image image,Component comp)
	{
		MediaTracker mediaTracker = new MediaTracker(comp);
		mediaTracker.addImage(image,0);
		try
		{
			mediaTracker.waitForID(0);
			return image;
		}
		catch(InterruptedException ie)
		{
			System.out.println("Bildladevorgang unterbrochen:  "+ie.getMessage());
			return null;
		}
	}
}


import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
public class FarbMosaik extends Panel
{
	private ModelIF mosaikModel;
	private MosaikEventHandler eventHandler;
	public MosaikEventHandler getEventHandler()
	{
		return eventHandler;
	}
	public FarbMosaik(int raster ,int breite,Color farbeRueckseite,Color farbeVorderseite)
	{
		mosaikModel = new MosaikModel(raster,raster);
		eventHandler = new MosaikEventHandler(mosaikModel);
		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);
				mosaikModel.putObj(i,j,mc);
				mc.setSize(canvasBreite,canvasBreite);
				this.add(mc);
			}
		}
	}
}



import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Image;
import java.awt.Panel;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.ReplicateScaleFilter;
public class BildMosaik extends Panel
{
	private ModelIF mosaikModel;
	private MosaikEventHandler eventHandler;
	public BildMosaik(int raster ,Color farbeRueckseite,Image image)
	{
		this.setLayout(new GridLayout(raster,raster));
		mosaikModel = new MosaikModel(raster,raster);
		eventHandler = new MosaikEventHandler(mosaikModel);
		int imageWidth = image.getWidth(this);
		if((imageWidth % raster) !=0)
		{
			imageWidth = (imageWidth/raster)*raster ;
		}
		int bildCanvasBreite = imageWidth/raster;
		ImageFilter scaleFilter = new ReplicateScaleFilter(imageWidth,imageWidth);
		Image volbild = this.createImage(new FilteredImageSource(image.getSource(),scaleFilter));
		for(int i = 0;i<raster;i++)
		{
			for(int j=0;j<raster;j++)
			{
				BildCanvas bc = new BildCanvas(i,j,farbeRueckseite);
				ImageFilter cropImageFilter = new CropImageFilter(j * bildCanvasBreite,i * bildCanvasBreite, bildCanvasBreite-1,bildCanvasBreite -1);
				Image canvasImage =  bc.createImage(new FilteredImageSource(volbild.getSource(),cropImageFilter));
				bc.setCanvasImage(canvasImage);
				bc.setSize(bildCanvasBreite,bildCanvasBreite);
				bc.addMouseListener(eventHandler);
				mosaikModel.putObj(i,j,bc);
				this.add(bc);
			}
		}
	}
}


import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
public class BildCanvas extends Canvas implements MosaikIF
{
	private Image canvasImage;
	private Color farbRueckseite;
	private Graphics grOffScreen;
	private Image imageOffScreen;
	public Color getFarbe()
	{
		return farbRueckseite;
	}
	public void setFarbe(Color inValue)
	{
		farbRueckseite=inValue;
	}
	private boolean vorderseite;
	public boolean isVorderseite()
	{
		return vorderseite;
	}
	public void switchSeite()
	{
		vorderseite=!vorderseite;
		repaint();
	}
	private int zeile,spalte;
	public int getZeile()
	{
		return zeile;
	}
	public int getSpalte()
	{
		return spalte;
	}
	public int setZeile(int zeile)
	{
		this.zeile = zeile;
		return zeile;
	}
	public int setSpalte(int spalte)
	{
		this.spalte = spalte;
		return spalte;
	}
	public BildCanvas(int zeile , int spalte ,Color farbeRueckseite)
	{
		setZeile(zeile);
		setSpalte(spalte);
		setFarbe(farbeRueckseite);
	}
	public void setCanvasImage(Image inImage)
	{
		canvasImage = inImage;
	}
	public void paint(Graphics g)
	{
		if (!(canvasImage.getWidth(this)>0))return;
	  if(grOffScreen == null)
		 createOffScreenImage();
	  if (vorderseite)
	  {
	    grOffScreen.drawImage(canvasImage,0,0,this);
	  }
	    else
	    {
	    	grOffScreen.setColor(getFarbe());
	        grOffScreen.fillRect(0,0,getSize().width,getSize().height);
	    }
	    g.drawImage(imageOffScreen,0,0,this);
        }
      public void update(Graphics g)
     {
      	paint(g);
     }
     private void createOffScreenImage()
     {
     	int breite = canvasImage.getWidth(this);
     	imageOffScreen = createImage(breite,breite);
    	grOffScreen=imageOffScreen.getGraphics();
     }
  }

public class StatistikModel implements ModelIF
{
	private int versuche;
	String returnString = "Anzahl Versuche: ";
	public String StatistikModel()
	{
		returnString += versuche;
	    returnString += "\n";
	    return returnString;
	}
	public void action(int zeile,int spalte)
	{
		versuche++;
	}
    public void putObj(int zeile,int spalte,MosaikIF mObj) {
    }
}

hier ist das Bield :
http://www.java-forum.org/asset.php?fid=7503&uid=49725&d=1427965076

Das mall mein Mosaik spiel mit ausgabe der Versuche .
Und jetz kom ich zu meiner eigendlichen frage .
Wie mach ich das am besten das ich die spalte unt zeiler der geklikten felder speicher und einzeln am schlus ausgebe .
Ich würde mich freuen wen mier wer helfen kann.
LG Christoph
 
Zuletzt bearbeitet:

Joose

Top Contributor
Es wäre schon hilfreich gewesen jeweils eine Klasse pro Java Code Block zu schreiben (macht den Code lesbarer, weils nicht eine lange Wurst ist!).

Hast du bereits einen Ansatz?
Im MosaikEventHandler holst du dir doch Spalte und Zeile ab, da wird dir doch bestimmt eine Möglichkeit einfallen es zu speichern (Liste oder ähnliches) ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Speicherung auf einem Server Allgemeine Java-Themen 1
J Input/Output Art der Speicherung Allgemeine Java-Themen 1
M Lernende Vektorquantisierung - Implementation und Speicherung Allgemeine Java-Themen 1
MTJ004 FTP Frage zu FTP Speicherung Java-Android-FTP Allgemeine Java-Themen 5
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
I PNG - Dateiformat + Speicherung Allgemeine Java-Themen 9
X Persistente Speicherung Allgemeine Java-Themen 14
Fu3L Input/Output Brauche Rat bei effizienter Speicherung großer Datenmengen Allgemeine Java-Themen 21
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
S Speicherung von Daten: Datenbank(sql) oder xml? Allgemeine Java-Themen 9
B Speicherung von Daten, Grundsatzfrage Allgemeine Java-Themen 3
@ [Sicherheit] Speicherung von Keys für Verschlüsselung Allgemeine Java-Themen 4
M Speicherung von Konfigurationsdaten Allgemeine Java-Themen 3
S Speicherung von Configurationen und zugriff auf diese Allgemeine Java-Themen 7
H JavaFX Warnung in package Zeile Allgemeine Java-Themen 2
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
M Checkstyle 100 Zeichen pro Zeile Allgemeine Java-Themen 11
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
Bluedaishi Zeile um zeichen erweitern Allgemeine Java-Themen 9
M String automatisch in nächste Zeile umbrechen (Graphics) Allgemeine Java-Themen 6
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
F JTextArea Cursor in die nächste Zeile setzen Allgemeine Java-Themen 2
C Input/Output Bestimmte Zeile in Datei ändern. Allgemeine Java-Themen 13
M Startdatei konnte nicht geparst werden. Fehler in Zeile 0 Allgemeine Java-Themen 5
127.0.0.1 StringBuffer leere Zeile löschen Allgemeine Java-Themen 8
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
X Scanner hört nach der 25. Zeile auf Allgemeine Java-Themen 6
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
1 InputStream liest die letzte Zeile nicht ein Allgemeine Java-Themen 2
S String aus Datei-Zeile auslesen Allgemeine Java-Themen 6
C Zeile aus einer CSV-Datei löschen Allgemeine Java-Themen 3
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
H RandomAccessFile - Zeile finden Allgemeine Java-Themen 5
S readLine() liest nur jede 2. Zeile Allgemeine Java-Themen 3
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
P readLine() liest nur jede dritte Zeile? Allgemeine Java-Themen 3
G Zeile einfügen in TreeTable Allgemeine Java-Themen 2
M .txt Datei öffnen und jede Zeile mit festem String verketten Allgemeine Java-Themen 5
O Zeile eines Textfiles löschen Allgemeine Java-Themen 2
B in file immer 2. zeile überschreiben Allgemeine Java-Themen 8
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
B Logs - txt-Datei neue Zeile anfuegen, neue Datei erstellen Allgemeine Java-Themen 6
S Zweidimensionales Array neue Zeile erzeugen Allgemeine Java-Themen 3
P Neue Zeile Plattformunabhängig Allgemeine Java-Themen 3
I Zeile überprüfen Allgemeine Java-Themen 12
P JTable selektierte Zeile mitwandern Allgemeine Java-Themen 2
Saxony Letzte Zeile eines Streames mit auslesen Allgemeine Java-Themen 4
H Notepad - Mitgabeparameter um in eine Zeile zu springen Allgemeine Java-Themen 15
M Funktion liest nach Textaus aus der vorigen Zeile Allgemeine Java-Themen 2
TheJavaKid Zeile auf existenz von String prüfen. Allgemeine Java-Themen 19
R Einzelne Zeile manipulieren Allgemeine Java-Themen 4
M Datei und Zeile im Code Allgemeine Java-Themen 2
J Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile? Allgemeine Java-Themen 4
W gezielt eine Zeile einlesen? Allgemeine Java-Themen 6
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
V Class Document seltsam leere Zeile am Anfang Allgemeine Java-Themen 8
G String in String-Array umwandeln in einer Zeile? Allgemeine Java-Themen 2
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
M benötigte Excelformeln in die letzte Spalte Allgemeine Java-Themen 9
Iron Monkey Spalte der Tabelle abwechselnd färben Allgemeine Java-Themen 8
B CellRenderer für ganze Spalte Allgemeine Java-Themen 5
SexyPenny90 Spalte einer Exceldatei in einem String speichern Allgemeine Java-Themen 11
T DataFrame (Matrix mit mit verschiedenen Typen pro Spalte) Allgemeine Java-Themen 4
P JTable suchen in einer Spalte Allgemeine Java-Themen 24
G Hilfe - JButton in JTable (Spalte) einfügen! Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben