Hallo zusammen,
hab vor kurzem meine ersten Gehversuche unternommen, Java nicht nur über die Commandline zu nutzen. Nun stehe ich vor folgendem Problem:
Der User gibt in einem Frame (f1) einen Zahlenwert ein (zb5).
Das nächste Fenster (f2) erwartet nun Einträge für eine n x n+1 Matrix der zuvor definierten Größe (also 30).
Diese Werte möchte ich in einer Textdatei speichern und wollte sie abgreifen, sobald die Matrixeingabe mit ok bestätigt wurde. Leider sieht der Actionlistener-block nun diese Matrixfelder nicht mehr.
Bei dem ersten Wert konnte ich vor dem Actionlistener initialisieren, da ich ja weiß, dass ich genau ein Textfeld und genau einen ok-Button brauche, dass klappt natürlich nicht bei der Matrix da der User ja die Anzahl der Felder bestimmt.
Als kleine weitere Besonderheit: diese beiden Abfragen wiederholen sich, also ein f1 ruft f2 und f2 ein f1 eine endliche anzahl (Nutzereingabe) oft.
Hier dann mal der Code dazu:
Habe natürlich hinten und vorne bisschen was abgeschnitten, da ich denke, es ist nicht von relevanz.
In der Hoffnung auf Hilfe
greetz
Aticus
hab vor kurzem meine ersten Gehversuche unternommen, Java nicht nur über die Commandline zu nutzen. Nun stehe ich vor folgendem Problem:
Der User gibt in einem Frame (f1) einen Zahlenwert ein (zb5).
Das nächste Fenster (f2) erwartet nun Einträge für eine n x n+1 Matrix der zuvor definierten Größe (also 30).
Diese Werte möchte ich in einer Textdatei speichern und wollte sie abgreifen, sobald die Matrixeingabe mit ok bestätigt wurde. Leider sieht der Actionlistener-block nun diese Matrixfelder nicht mehr.
Bei dem ersten Wert konnte ich vor dem Actionlistener initialisieren, da ich ja weiß, dass ich genau ein Textfeld und genau einen ok-Button brauche, dass klappt natürlich nicht bei der Matrix da der User ja die Anzahl der Felder bestimmt.
Als kleine weitere Besonderheit: diese beiden Abfragen wiederholen sich, also ein f1 ruft f2 und f2 ein f1 eine endliche anzahl (Nutzereingabe) oft.
Hier dann mal der Code dazu:
Java:
package com.tutego.insel.ui.swing;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
/**
*
* @author Michi
*/
public class Runner {
public static void main ( String[] args ) throws IOException
{
final int tfaktor=4;// Umrechnugnsfaktor Zeit
final double wegfaktor=0.5; //Umrechnungsfaktor weg
double weg=1935.5; //gesamtweg
//hier der erste frame für Geschwindigkeit und Anzahl der Knoten
final JFrame f1 = new JFrame();
f1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f1.setLayout( new GridLayout(3,1) );
f1.setSize( (int) (200) , 200 );
final JButton go1 = new JButton( "Go" );
final JTextField speed1 = new JTextField( "Geschwindigkeit", 10 );
final JTextField knotenzahl = new JTextField( "# Knoten", 10 );
//tooltips:
go1.setToolTipText( "Zur nächsten Phase" );
speed1.setToolTipText("Zulässige Geschwindigkeit in km/h" );
knotenzahl.setToolTipText("Anzahl der Kreuzungen" );
f1.add(speed1);
f1.add(knotenzahl);
f1.add(go1);
f1.pack();
f1.setVisible( true );
//der zweite frame für Abstände in Hinrichtung
go1.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
int knotenint = ZahlausString.zahlen(knotenzahl.getText());
//hier erzeugen wir schonmal die Dateien für die Knoten
String[] dateinamen= new String[knotenint];
final PrintWriter[] dateien = new PrintWriter[knotenint];
for(int i=0;i<knotenint;i++)
{
dateinamen[i]="c:/Pilzdaten/datei"+(i+1)+".txt";
try {
dateien[i] = new PrintWriter(dateinamen[i]);
} catch (FileNotFoundException ex) {
Logger.getLogger(Runner.class.getName()).log(Level.SEVERE, null, ex);
}
}
//also sind die dateien nun vorhanden
//der zweite frame für Abstände in Hinrichtung
final JFrame f2 = new JFrame("Abstand Hinrichtung");
f2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f2.setLayout( new GridLayout(1,knotenint) );
final JTextField[] hinweg = new JTextField[knotenint-1] ;
for(int i=0;i<knotenint-1;i++){
hinweg[i]= new JTextField(5);
hinweg[i].setToolTipText("Abstand (m) von Haltelinie zu Haltelinie in Hinrichtung" );
f2.add(hinweg[i]);
}
//nächster go button
final JButton go2 = new JButton( "Go" );
f2.add(go2);
f1.dispose();
f2.pack();
f2.setVisible( true );
//nächster untermenü für Rückrichtung
go2.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
//der zweite frame für Abstände in Hinrichtung
final int knotenint = ZahlausString.zahlen(knotenzahl.getText());
final JFrame f3 = new JFrame("Abstand Rückrichtung");
f3.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f3.setLayout( new GridLayout(1,knotenint) );
final JTextField[] rueckweg = new JTextField[knotenint-1] ;
for(int i=0;i<knotenint-1;i++){
rueckweg[i]= new JTextField(5);
rueckweg[i].setToolTipText("Abstand (m) von Haltelinie zu Haltelinie in Rückrichtung" );
f3.add(rueckweg[i]);
}
//nächster go button
final JButton go3 = new JButton( "Go" );
f3.add(go3);
f2.dispose();
f3.pack();
f3.setVisible( true );
//nächstes untermenü für die anzahl der Ampeln und hier muss
// die forschleife laufen
go3.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
final JFrame[] ampelframe= new JFrame[knotenint];
final JFrame[] zzmframe= new JFrame[knotenint];
final JButton[] ampelgo = new JButton[knotenint];
final JButton[] zzmgo = new JButton[knotenint];
final JTextField[] ampelanzahl = new JTextField[knotenint];
for( int j = 0;j<knotenint;j++){
ampelframe[j] = new JFrame("Ampelzahl für Knoten "+(j+1));
ampelframe[j].setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
ampelframe[j].setLayout( new GridLayout(2,1) );
ampelgo[j]=new JButton("OK");
ampelanzahl[j] = new JTextField(30);
ampelanzahl[j].setToolTipText("Wieviele verschiedene Ampeln hat die Kreuzung?" );
ampelframe[j].add(ampelanzahl[j]);
ampelframe[j].add(ampelgo[j]);
ampelframe[j].pack();
zzmframe[j] = new JFrame("ZZM für Knoten "+(j+1));
zzmframe[j].setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
zzmgo[j]=new JButton("OK");
}
for( int j = 0;j<knotenint;j++){
final int k =j;
ampelgo[k].addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
//hier wurde die Ampelanzahl eingegeben, also greifen wir sie gleich ab:
dateien[k].println("Anzal: "+ampelanzahl[k].getText());
//information in die richtige Datei gespeichert
int zzmzeilen= ZahlausString.zahlen(ampelanzahl[k].getText())+1;
int zzmspalten= zzmzeilen;
zzmframe[k].setSize(200,200);
zzmframe[k].setLayout( new GridLayout(zzmzeilen, zzmspalten) );
final JTextField[] zzmfield = new JTextField[zzmspalten*(zzmzeilen-1)];
for( int n = 0;n<zzmspalten*(zzmzeilen-1);n++)
{ zzmfield[n]=new JTextField(10);
if((n+1)%(zzmspalten)==0)
{zzmfield[n].setToolTipText("Ist dies Wellen-Hinrichtung, setze 1, Wellen-Rückrichtung 2 sonst 0" );}
zzmframe[k].add(zzmfield[n]);
}
zzmframe[k].add(zzmgo[k]);
zzmframe[k].pack();
ampelframe[k].dispose();
zzmframe[k].setVisible(true);
}
});//hier machen wir die actionlistener für die einzelnen ampeln zu
zzmgo[k].addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
//es wurde ein ok für eine ZZM gegeben, also greifen wir auch hier die Daten ab:
int zzmzeilen= ZahlausString.zahlen(ampelanzahl[k].getText())+1;
int zzmspalten= zzmzeilen;
for( int n = 0;n<zzmspalten*(zzmzeilen-1);n++)
{
if((n+1)%(zzmspalten)!=0){
// dateien[k].print(zzmfield[n].getText());
}
}
//Daten ausgelesen
if(k<knotenint-1){
zzmframe[k].dispose();
ampelframe[k+1].setVisible(true);}
else {
zzmframe[k].dispose();
//In diesem Block werden wir die Daten auslesen und in die Datein schreiben
//Wir wissen, dass wir so viele Dateien wie knoten brauchen, also produzieren wir zunächst die Dateien
/* dateien[i].println("Anzal: "+ampelanzahl[i].getText());
dateien[i].print("[");
int zzmspalten =ZahlausString.zahlen(ampelanzahl[i].getText())+1;
int zzmzeilen=zzmspalten;
}*/
for(int i=0;i<knotenint;i++)
{
dateien[i].close();
}
System.out.println("Die nötigen Datein wurden erstellt");
System.exit( 0 );}
}
});//hier machen wir die actionlistener für die einzelnen zwischenzeit matrizzen zu
}//und hier die for schleife für die listener der ampeln und zzms
f3.dispose();
ampelframe[0].setVisible(true);
}
} );// hier schließt die ampel
}
} );//hier schließt Abstand Rückrichtung
}
} );//hier schließt Abstand hincirchutng
}
}
Habe natürlich hinten und vorne bisschen was abgeschnitten, da ich denke, es ist nicht von relevanz.
In der Hoffnung auf Hilfe
greetz
Aticus
Zuletzt bearbeitet: