Hallöchen ich bins mal wieder
Habe ein Problem, und zwar, dass meine eingegebenen Werte nicht gezeichnet werden.
Hier mal meine Klassen:
klasse stationspunkt
klasse strasse
Das sollte er eigtl zeichnen, machts aber net.
klasse strassenpanel
klasse strassenberechnung
Habe ein Problem, und zwar, dass meine eingegebenen Werte nicht gezeichnet werden.
Hier mal meine Klassen:
klasse stationspunkt
Java:
public class StationsPunkt
{
public double station,breite;
}
klasse strasse
Java:
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.ArrayList;
public class Strasse
{
double m_station;
public double m_dicke;
ArrayList<StationsPunkt> StationsPunkt = new ArrayList<StationsPunkt>();
public double getM_dicke()
{
return m_dicke;
}
public void setM_dicke(double m_dicke)
{
this.m_dicke = m_dicke;
}
void addStation (StationsPunkt punkt)
{
StationsPunkt.add(punkt);
}
double getFlaeche()
{
double flaeche = 0;
double einzelflaeche = 0;
for (int i = 1; i < StationsPunkt.size(); ++i)
{
StationsPunkt p0 = StationsPunkt.get(i-1);
StationsPunkt p1 = StationsPunkt.get(i);
einzelflaeche = (p1.station - p0.station) *(( p0.breite+p1.breite)/2);
flaeche += einzelflaeche;
}
return flaeche;
}
double getVolumen()
{
double volumen = 0;
volumen = getFlaeche() * m_dicke;
return volumen;
}
public double getM_station()
{
return m_station;
}
[COLOR="Red"] void zeichne(Graphics2D g)
{
g.translate(100,200);
GeneralPath pfad = new GeneralPath();
pfad.moveTo(100,300);
for (int i = 1; i < StationsPunkt.size(); ++i)
{
StationsPunkt p0 = StationsPunkt.get(i-1);
StationsPunkt p1 = StationsPunkt.get(i);
pfad.lineTo((p1.station-p0.station)*10.0,0*30.0); //geht nach rechts
pfad.lineTo((p1.station)*10.0,(p1.breite/2)*30.0); //geht nach unten
pfad.lineTo((0)*10.0,(p0.breite/2)*30.0); //geht nach links zu anfangspkt
pfad.lineTo((0)*10.0,(-p0.breite)*30.0); //geht nach oben
pfad.lineTo((p1.station)*10.0,((0-p1.breite)/2)*30.0); //nach rechts zur oberen br. gehen
pfad.lineTo((p1.station)*10.0,(0)*30.0); //zur mittellinie
g.drawString(" "+(p0.station),(float) ((p0.station)*10.0),(float)30.0 );
g.drawString(" "+(p0.breite), (float)((p0.station)*10.0),(float)10.0);
}
}[/COLOR]
}
klasse strassenpanel
Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class StrassenPanel extends JPanel
{
private Strasse m_strasse;
static final long serialVersionUID = 1;
public StrassenPanel(Strasse b)
{
m_strasse = b;
}
public void paintComponent( Graphics g )
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
m_strasse.zeichne( g2d );
}
}
klasse strassenberechnung
Java:
import java.util.Scanner;
import javax.swing.JFrame;
public class StrassenBerechnung
{
public static void main(String[] args)
{
double dicke, kosten;
Strasse strasse = new Strasse();
Scanner sc = new Scanner(System.in);
while(true)
{
StationsPunkt punkt = new StationsPunkt();
System.out.println("Bitte Station eingeben: ");
punkt.station = sc.nextDouble();
if (punkt.station < 0)
break;
System.out.println("Bitte Breite an der Station eingeben: ");
punkt.breite = sc.nextDouble();
strasse.addStation(punkt);
}
System.out.println("Eingabe Straßendicke : ");
dicke = sc.nextDouble();
strasse.m_dicke = dicke;
System.out.println("Eingabe Kosten [€/m³] : ");
kosten = sc.nextDouble();
System.out.println("Fläche beträgt " +strasse.getFlaeche());
kosten = kosten * strasse.getVolumen();
System.out.println("Kosten belaufen sich auf "+kosten+" Euro");
//Fenster erzeugen
JFrame fenster = new JFrame( "Titel" ); //Fenstertitel
fenster.setSize( 1024, 768 ); //größe auf 1024*768 eingestellt
fenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
fenster.setAlwaysOnTop( true );
StrassenPanel panel = new StrassenPanel( strasse );
fenster.add( panel );
fenster.setVisible( true );
//fenster + objekt vom typ StrassenPanel erzeugt
}
}