JohnathanBernstein
Mitglied
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: