Rundenzähler funktionniert nicht

Code:
package Fluxflow;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class ParkettMainClass extends JFrame //implements Beobachter, AnzeigeElement
{
	private ZeichnungsPanel pnlMalflaeche;	
	private JPanel pnlSteuerung;		

	private Button btnStart = new Button("Start");	
	private Button btnStop = new Button("Stop");
	
	private Label lblL = new Label("Länge");
	private TextField txtL = new TextField(3);
	private Label lblH = new Label("Höhe");
	private TextField txtH = new TextField(3);
	private Label lblZ = new Label("Zustände");
	private TextField txtZ = new TextField();
	private Label lblE = new Label("Ecken (3,4 oder 6)");
	private TextField txtE = new TextField(3);
	private Label lblT = new Label("Topologie(E,Z,T)");
	private TextField txtT = new TextField(3);
	private meinRPosACPanel pnlRPosAC = new meinRPosACPanel();// relative Positions zugriffs Kontrolle.relative position access controll
	
	private XEckMalen xEMalen; 
	private int grPolygon=10;
	private CFGData cfgData;
	private int[][] verteilung;
	private ParkettLogik pl;

	MeinZeichnungsThread mzt;	
	private boolean running=false;
	int runden=0;
	
	public ParkettMainClass()//(Subjekt dataPanel)
	{
		super("Cirqulierende Farben");
		//dataPanel.regestriereBeobachter(this);	
        xEMalen=new XEckMalen(grPolygon, 4);//Vorläufig immer quadrate;
		
		pnlMalflaeche = new ZeichnungsPanel(); 
		pnlSteuerung = new JPanel(); 
		
		Dimension preferredSize=new Dimension(1000,750);
		this.setSize(preferredSize);		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
		initComponents();
	}
	
	protected void initComponents()
	{		
		this.add(pnlSteuerung,BorderLayout.EAST);
		this.add(pnlMalflaeche,BorderLayout.CENTER);
		//Rahmen!
		pnlSteuerung.setBorder(BorderFactory.createLineBorder(Color.blue, 4));
		pnlMalflaeche.setBorder(BorderFactory.createLineBorder(Color.red, 3));
		
		initSteuerungsAnzeige();
		initZeichnungsAnzeige();
				
	}
	
	protected void initSteuerungsAnzeige()
	{
		btnStart.setBackground(Color.green);
		btnStart.addActionListener(new MeinInnererStartListener());
		
		btnStop.setBackground(Color.red);
		btnStop.addActionListener(new MeinInnererStopListener());
				
		pnlRPosAC.setBorder(BorderFactory.createLineBorder(Color.black, 3));						

		pnlSteuerung.setLayout(new GridLayout(0,2,1,5));
		pnlSteuerung.add(btnStart);
		pnlSteuerung.add(btnStop);
		pnlSteuerung.add(lblL);
		lblL.setFont(new Font(Font.DIALOG_INPUT,Font.ROMAN_BASELINE,40));
		pnlSteuerung.add(txtL);
		txtL.setFont(new Font(Font.DIALOG_INPUT,Font.ROMAN_BASELINE,50));
		pnlSteuerung.add(lblH);
		pnlSteuerung.add(txtH);
		pnlSteuerung.add(lblZ);
		pnlSteuerung.add(txtZ);
		pnlSteuerung.add(lblE);
		pnlSteuerung.add(txtE);
		pnlSteuerung.add(lblT);
		pnlSteuerung.add(txtT);
		pnlSteuerung.add(pnlRPosAC);
		
		txtL.setText("5");
		txtH.setText("5");
		txtZ.setText("5");
		txtE.setText("4");
		txtT.setText("E");
		
		txtL.setEnabled(true);
		txtH.setEnabled(true);
		txtZ.setEnabled(true);
		txtE.setEnabled(true);		
		txtT.setEnabled(true);
	}
	
	private void initZeichnungsAnzeige()
	{
		
	}

	public CFGData getCFGData()
	{
		CFGData c;
		int l=Integer.parseInt(txtL.getText());
		int b=Integer.parseInt(txtH.getText());
		int z=Integer.parseInt(txtZ.getText());
		int e=Integer.parseInt(txtE.getText());
		String t=txtT.getText();
		Point p = new Point(l,b);
		Point p2[]=pnlRPosAC.getRPosAC();
		c=new CFGData(z,e,p,t,p2);
		return c;
	}
		
	private class MeinInnererStartListener implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent event) 
		{
			mzt=new MeinZeichnungsThread();
			running=true;
			mzt.start();
		}
	}	

	private class MeinInnererStopListener implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent event) 
		{
			running=false;
			mzt.interrupt();
		}
	}
	
	private class MeinZeichnungsThread extends Thread
	{
		@Override
		public void run()
		{
			cfgData=getCFGData();			
			verteilung=new int[cfgData.getMaße().x][cfgData.getMaße().y];
			pl=new ParkettLogik(cfgData,verteilung);
			pl.randomParkett();
			
			
			while(running)
			{
				System.out.println("Zeichen Runde Nr.:"+runden);
				pl.berechneParkett();
				pnlMalflaeche.repaint();
				runden++;
			}
		}		
	}
	
	public class ZeichnungsPanel extends JPanel
	{	
		private boolean strDrw=false;
		
		public void paintComponent(Graphics g)
		{
			//super.paint(g);
		
			System.out.println("***Inside paintComponent***");
			System.out.println(1e9);
					
			vierEqParkettMalen(g);
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}				
		}
			
	    public void vierEqParkettMalen(Graphics g)
	    {
	    	try    	
	    	{
	    		Farben farbe=new Farben();
	    		cfgData=getCFGData();
	    		for(int x=0;x<cfgData.getMaße().x;x++)
	    		{
	    			for(int y=0;y<cfgData.getMaße().y;y++)
	    			{

	    				int size=xEMalen.getGroesse();
	    				int xZentrum = (int)Math.round((double)(x*size)+15);
	    				int yZentrum = (int)Math.round((double)(y*size)+15);
	    				Point pos=new Point(xZentrum,yZentrum);
	    				Color c=farbe.getColor(verteilung[x][y]);
	    				xEMalen.regelMaessigesXEckMalen(g, c, pos, Math.PI/4);               
	    			}
	    		}
	    	}
	    	catch(Exception ex)
	    	{
	    		System.out.println("Drawing failed");
	    		if(cfgData==null)	
	    		{
	    			System.out.println("cfgData equals null");
	    		}
	    		else
	    		{    			
	    			cfgData.toString();
	    			ex.printStackTrace();
	    		}
	    	}
	    }		
	}
}

hallo alle miteinnand,
der runden zähler oben fängt bei einigen tausend an zu zählen. Soll aber bei 1 oder 0 anfangen.
 
Zuletzt bearbeitet:

sheel

I love Asm
Hi

bitte genauere Problembeschreibung.
Du kopierst hier einfach hunderte Codezeilen rein und erwartest, das wir deine Gedanken lesen...
 
Okay hab gerade etwas probleme mit dem "Markup" wie kann man das aktivieren?

Also folgender der Code ist eine innere Klasse die ausserdem ein Thread ist. Mein Code ist bei weitem nicht gut aber ich will es erstmal zum laufen bringen. In folgendem Code kommt ausserdem der runden zähler vor, der ausserhalb(umgebende klasse) mit 0 Initialsiert wird s.o. Ansonsten kommt die Variable runden nur in diesem Thread vor. Und er zählt nicht korrekt. Er beginnt bei einigen tausend und zählt dann brav runde für runde. Warum?Ich benutze eclipse
Java:
    private class MeinZeichnungsThread extends Thread
    {
        @Override
        public void run()
        {
            cfgData=getCFGData();           
            verteilung=new int[cfgData.getMaße().x][cfgData.getMaße().y];
            pl=new ParkettLogik(cfgData,verteilung);
            pl.randomParkett();
            
            
            while(running)
            {
                System.out.println("Zeichen Runde Nr.:"+runden);
                pl.berechneParkett();
                pnlMalflaeche.repaint();
                runden++;
            }
        }       
    }
 
Zuletzt bearbeitet von einem Moderator:

HonniCilest

Erfahrenes Mitglied
Wie stellst du das fest? Indem du das Output einfach hochscrollst? Wenn ja muss ich dir sagen, dass Eclipse eine Zeichenbeschränkung hat. Du kannst die Begrenzung in den Optionen aber glaube ich ausstellen. Ich würde spontan bei Debug-Optionen suchen.