Problem mit TextFeld Array

dehlen

Bekanntes Mitglied
Hallo habe leider mal wieder ein Problem .... folgendes : Ich habe ein JMenu mit einem Reiter Optionen
darin habe ich wiederum 2 MenuItem nämliche Öffnen und Sichern.
Desweiteren habe ich 3 TextFelder.
Beim Speichern soll er die eingetragenen Werte der TextFelder in eine TextDatei schreiben, er schreibt aber immer nur den Wert des 3 Textfeldes in eine TextDatei.

Beim Öffnen hakt es auch noch ein bisschen. Er soll wenn Öffnen ausgewählt wurde das 1Wort des TextDatei in das erste Textfeld schreiben das zweite Wort der TextDatei ins zweite TextFeld usw.
Das auslesen der TextDatei funktioniert aber ich kriege leider es nicht hin die TextFelder so zu befüllen wie ich es will. Im moment so wie ich es jetzt habe wird nur das letzte wort ins 3 Textfeld geschrieben was ja auch richtig ist aber die anderen beiden fehlen halt noch.
Wäre dankbar für Ratschläge!

Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.datatransfer.*; //Bibliothek um auf die Zwischenablage zuzugreifen
import java.util.*;
import java.io.*;


public class VigenereFrame 
{
//Komponenten werden deklariert

JTextField eingabe,schluesselfeld,ausgabe;
JButton entschluesseln,verschluesseln,ok,leeren,kopieren,back;
JLabel oben,mitte,unten,textlabel,textlabel1,textlabel2;
JFrame fenster;
JDialog dialog; //lokale Variabel damit der ActionListener auf den Dialog zugreifen kann
JDialog popup = dialog;//wird der Klassenvariablen popup des Datentypes JDialogs der dialog übergeben
private String zufälligesWort;
JMenu menu;
JFileChooser filechooser = new JFileChooser();
ArrayList words = new ArrayList();


JTextField[] Felder;

String input;
int[] zahl;
String schluessel;

public void button_create() { //Methode um die Buttons des JFrames zu erstellen
//Frame hat kein vordefiniertes Layout


//Buttons deklarieren
verschluesseln = new JButton("encode");
verschluesseln.setFont(new Font("Arial", Font.PLAIN, 11));
entschluesseln = new JButton("decode");
entschluesseln.setFont(new Font("Arial", Font.PLAIN, 11));
back = new JButton("Zum Menü");
back.setFont(new Font("Arial", Font.PLAIN, 11));

fenster.setLayout(null);

//Layout der Buttons bestimmen
entschluesseln.setBounds(25,25,80,50);
verschluesseln.setBounds(25,90,80,50);
back.setBounds(25,155,80,50);


//Buttons bekommen einen ActionListener
Listener_entschluesseln Encoding = new Listener_entschluesseln();
Listener_verschluesseln Decoding = new Listener_verschluesseln();
Listener_back Back = new Listener_back();
entschluesseln.addActionListener(Encoding);
verschluesseln.addActionListener(Decoding);
back.addActionListener(Back);

fenster.add(verschluesseln);
fenster.add(entschluesseln);
fenster.add(back);

}
    
private void textfield_create() //selbe wie bei Buttons nur für die Textfelder
{


}



    
private void label_create() { //selbe wie bei Buttons nur mit den Labels
fenster.setLayout(null);

oben = new JLabel("zu verschluesselnder Text");
mitte = new JLabel("Schluesselwort");
unten = new JLabel("entschluesselter Text");
     
oben.setBounds(127,10,230,15);
mitte.setBounds(127,78,230,15);
unten.setBounds(127,143,230,15);
     
        fenster.add(oben);
        fenster.add(mitte);
        fenster.add(unten);

    }

    class Listener_entschluesseln implements ActionListener { //ActionListener wird aufgerufen
        public void actionPerformed(ActionEvent e) {//ActionEvent
            input= Felder[0].getText(); //in der Variabel input wird der Text aus dem Textfeld eingabe gespeichert
input = input.toUpperCase();//Buchstaben werden groß geschrieben damit der Algorithmus zum verschlüsseln funktioniert
schluessel = Felder[1].getText();
schluessel = schluessel.toUpperCase();
Vigenere Buchstabe = new Vigenere(schluessel);//neues Objekt wird erstellt und der Wertz schluessel wird übergeben
StringBuilder output = new StringBuilder();//neuen StringBuilder erstellen
       
//char i deklariert eine Variable, die ein Element aus dem Array festhält.
//Bei jedem Schleifendurchlauf enthält die Variable ein anderes Element aus dem Array 
//bis es keine Elemente mehr gibt durch das toCharArray wird der String zum CharArray

for(char i : input.toCharArray())
            
//Die einzelnen Buchstaben werden mit Hilfe des Schlüssels den wir durch das Objekt Buchstabe haben 
//und dem Verschlüsselungs Methodenaufruf durch .encode verschlüsselt und in dem String output gespeichert
output.append(Buchstabe.decode(i));
Felder[2].setText(""+output);//Der verschlüsselte Text wird in dem Textfeld ausgabe ausgegeben
            

              
   
        
    }
}

//siehe ActionListener oben (das selbe nur mit .decode)
class Listener_verschluesseln implements ActionListener {
public void actionPerformed(ActionEvent e) {

input= Felder[0].getText();
input = input.toUpperCase();
schluessel =Felder[1].getText();
schluessel = schluessel.toUpperCase();
Vigenere Buchstabe = new Vigenere(schluessel);
StringBuilder output = new StringBuilder();
String ausgabetext = new String(output);
       
for(char i : input.toCharArray())
output.append(Buchstabe.encode(i));
            
Felder[2].setText(""+output);


 }
    }
    
    class Listener_back implements ActionListener {
public void actionPerformed(ActionEvent e) {
try
        {
            Runtime.getRuntime().exec("java -jar Menu.jar");
        } catch(Exception ex)
        {
            
        }
        System.exit(0);

}
}
    
    
        



public VigenereFrame() { 
fenster = new JFrame("Vigenere-Verschluesselung"); //neuer JFrame - das Fenster
fenster.setSize(450,300);
fenster.setLocation(512,400);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button_create();
textfield_create();
label_create();




JMenuBar menuBar = new JMenuBar();
fenster.setJMenuBar (menuBar);
JMenu fileMenu = new JMenu ("Optionen");
menuBar.add (fileMenu);

JMenu keyMenu = new JMenu ("Schluessel");
menuBar.add (keyMenu);
JMenuItem saveItem = new JMenuItem ("Speichern",new ImageIcon ("save.png"));
fileMenu.add (saveItem);

JMenuItem openItem = new JMenuItem ("Öffnen",new ImageIcon ("open.png"));
fileMenu.add (openItem);

JMenuItem genItem = new JMenuItem ("Schluessel generieren");
keyMenu.add (genItem);
JMenuItem chooseItem = new JMenuItem ("Eigenen Schluessel aus Textdatei");
keyMenu.add (chooseItem);
final JTextField Felder[] = new JTextField[3];
for (int i = 0; i<Felder.length; i++)
{
Felder[i] = new JTextField();

Felder[0]=new JTextField("");
Felder[1]=new JTextField("");
Felder[2]=new JTextField("");

Felder[0].setBounds(125, 25, 290, 50);
Felder[1].setBounds(125,90,290,50);
Felder[2].setBounds(125,155,290,50);
fenster.add(Felder[i]);
}
      

chooseItem.addActionListener (new ActionListener()
{



         public void actionPerformed (ActionEvent e) 

         {


    
try {
JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei öffnen");
int druck = filechooser.showOpenDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();
 
        BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
 
        String zeile;
while((zeile = br.readLine()) != null) {
        String[] wx = zeile.split(" ");
        for (String s: wx) {
            words.add(s);
            zahl = new int[words.size()];
            Random zufall = new Random();
            for (int i=0; i<words.size(); i++) {
            zahl[i] = zufall.nextInt(words.size());
            Felder[1].setText(""+words.get(zahl[i]));
                

        
}
}
       }
}
 
} catch (IOException ioe) {
        ioe.printStackTrace();
}

}
      });


genItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         { 
             // Wortliste
                String str = "computer|radio|taschenrechner|lehrer|polizei|praesident|subjekt|land|umwelt|software|informatik|java|applet|hangman";
                String[] temp;
                
                // der Begrenzer
                String delimiter = "\\|";
                
                //String wird geteilt immer beim Begrenzer
                temp = str.split(delimiter);
                
        //Zufallsgenerator
        Random randomGenerator = new Random();
                
        //zufällige Nummer erstellen
        int randomInt = randomGenerator.nextInt(temp.length);

                zufälligesWort = new String(temp[randomInt]);

                



                Felder[1].setText(""+zufälligesWort);
  

         }

      });



JMenuItem delItem = new JMenuItem ("Textfelder leeren",new ImageIcon ("clear.png"));
fileMenu.add (delItem);
JMenuItem copyItem = new JMenuItem ("Entschlüsselten Text kopieren",new ImageIcon ("copy.png"));
fileMenu.add (copyItem);
fileMenu.addSeparator();
JMenuItem exitItem = new JMenuItem ("Schließen", new ImageIcon ("stop.png"));
fileMenu.add (exitItem);

JMenu gotoMenu = new JMenu ("GoTo");
menuBar.add (gotoMenu);

JMenuItem rsaItem = new JMenuItem ("Rsa");
gotoMenu.add (rsaItem);

JMenuItem caesarItem = new JMenuItem ("Caesar");
gotoMenu.add (caesarItem);

saveItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         {

        JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei speichern unter");
int druck = filechooser.showSaveDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();

try {
            BufferedWriter out = new BufferedWriter(new FileWriter(file.getAbsolutePath()));

          
            out.write(" \n"+Felder[0].getText());
            out.write(" \n"+Felder[1].getText());
            out.write(" \n"+Felder[2].getText());
         
            out.close();
        
        } catch (IOException ep) {
        }
    }

         }

      });

      
      openItem.addActionListener (new ActionListener()
      
      {

         public void actionPerformed (ActionEvent e) 

         {

             try {
JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei öffnen");
int druck = filechooser.showOpenDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();
 
        BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
 
String zeile;
while((zeile = br.readLine()) != null) {
        String[] wx = zeile.split(" ");
        for (String s: wx) {
            words.add(s);
            for (int i = 0; i < words.size(); i++) {
           Felder[i].setText(""+words.get(i));
           
        
        }


}
       }
    }
}
    
 catch (IOException ioe) {
        ioe.printStackTrace();
}
             
             }

      });

rsaItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         {

           try
        {
            Runtime.getRuntime().exec("java -jar Rsa.jar");
        } catch(Exception ex)
        {
            
        }
        System.exit(0);

         }

      });
      
      caesarItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         {
try
        {
            Runtime.getRuntime().exec("java -jar Caesar.jar");
        } catch(Exception ex)
        {
            
        }
        System.exit(0);

         }

      });


 exitItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         {

            // Frame unsichtbar machen.

            fenster.setVisible (false);

         }

      });
      delItem.addActionListener (new ActionListener()
      {

         public void actionPerformed (ActionEvent e) 

         {

            Felder[0].setText(""); 
     Felder[1].setText("");
Felder[2].setText("");

         }

      });
      copyItem.addActionListener (new ActionListener()
      {

         public void actionPerformed (ActionEvent e) 

         {

                   
Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard(); //greife auf die Zwischenablage zu
StringSelection selection=new StringSelection(Felder[2].getText());//neuw StringSelection
clip.setContents(selection,null);//String Selection (ausgabe.getText()) wird in die Zwischenablage geschrieben


         }

      });

fenster.setVisible(true);


        }
    


//erstelle neues VigenereFrame - durch MainMethode ist die Einbindung in eine .jar Anwendung möglich
//wichtig da die IDE nicht genug Zugriffsrechte hat (Zugriff auf die Zwischenablage)
public static void main(String[] args) {
VigenereFrame g = new VigenereFrame(); 
 
       
    }
  


}

EDIT: Merke gerade das meine Verschlüsselung und Entschlüsselung auch nicht mehr klappt, weil ich mit diesem TextArray irgendwie nicht klar komme.
Poste mal eben den ganzen Code damit ihr besser versteht was ich meine und mir gegebenfalls dann helfen könnt.
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
könntest du vielleicht den Code mal so formatieren, dass man auf anhieb sieht welche klammern wohin gehören!?

...
Java:
private void textfield_create() //selbe wie bei Buttons nur für die Textfelder
{
 
 
}

das kannst du auch angeben, auf die paar zeilen kommts auch net an
 
T

Tomate_Salat

Gast
schließe mich meinem vorredner an. So kann man den Code nur schwer lesen. Zu der nichtvorhandenen Formatierung gesellt sich noch das schlimmste ignorieren von Konventionen das ich hier im Forum bisher gesehen habe, du solltest dir diese unbedingt mal anschauen (siehe meine Signatur)!
 

Dit_

Bekanntes Mitglied
:eek:

*augenkrebs* :p
  1. Zeile 329. ich würde noch mit
    Code:
    out.flush()
    versuchen.
  2. benutze doch einfach
    Code:
    implements ActionListener
    dann hast du nur eine Methode in der du mit e.getSource() Komponente zuordnen und entsprechend behandeln kannst.
  3. Wenn du so unübersichtlich deinen Code gestaltest, dann findest du einen Fehler mit nur enorm viel Aufwand.
    Mache extra Methode
    Code:
    saveFromJTextFields()
    und poste bitte diese.
  4. Von Zeile 158 bis Zeile: 480 alles im KONSTRUKTOR? :shock:
    am besten speichere die Klasse irgendwo auf der Festplatte und schau sie dir später (in paar Monaten ) an :)

gruß
 

dehlen

Bekanntes Mitglied
OK also hier die entsprechenden Stellen wo es wohl den Fehler gibt:
Java:
//Um das TextFeld zu erstellen
final JTextField Felder[] = new JTextField[3];
for (int i = 0; i<Felder.length; i++)
{
Felder[i] = new JTextField();

Felder[0]=new JTextField("Eingabe");
Felder[1]=new JTextField("Schluessel");
Felder[2]=new JTextField("");

Felder[0].setBounds(125, 25, 290, 50);
Felder[1].setBounds(125,90,290,50);
Felder[2].setBounds(125,155,290,50);
fenster.add(Felder[i]);
}


//Datei Speichern - Fehlerhaft hier wird nur das Wort des 3 Textfeldes in eine TextDatei geschrieben
saveItem.addActionListener (new ActionListener()

      {

         public void actionPerformed (ActionEvent e) 

         {

        JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei speichern unter");
int druck = filechooser.showSaveDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();

try {
            BufferedWriter out = new BufferedWriter(new FileWriter(file.getAbsolutePath()));

          
            out.write(" \n"+Felder[0].getText());
            out.write(" \n"+Felder[1].getText());
            out.write(" \n"+Felder[2].getText());
         
            out.close();
        
        } catch (IOException ep) {
        }
    }

         }

      });


//Datei öffnen - Fehlerhaft hier wird nur das letzte Wort der TextDatei ausgelesen
 openItem.addActionListener (new ActionListener()
      
      {

         public void actionPerformed (ActionEvent e) 

         {

             try {
JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei öffnen");
int druck = filechooser.showOpenDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();
 
        BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
 
String zeile;
while((zeile = br.readLine()) != null) {
        String[] wx = zeile.split(" ");
        for (String s: wx) {
            words.add(s);
            for (int i = 0; i < words.size(); i++) {
           Felder[i].setText(""+words.get(i));
           
        
        }


}
       }
    }
}
    
 catch (IOException ioe) {
        ioe.printStackTrace();
}
             
             }

      });

Alle anderen Methoden z.B verschluesseln klappen auch nicht mehr , da ich irgendeinen Fehler mache beim Zugreifen auf die Textfelder
wenn ich anstatt dem TextFelder Array drei TextFelder erstelle und das dann versuche klappt das ver-entschluesseln und das speichern perfekt aber dann klappt das öffnen nicht mehr -.- daher hatte ich den Tipp bekommen das ich ein TextFeldArray bräuchte
 

jgh

Top Contributor
wenn du mir noch mal sagst, was das für eine Klasse
Code:
Vigenere
ist...werde ich dir -heute abend helfen.
 

dehlen

Bekanntes Mitglied
also willst du jetzt den Source Code von meiner Klasse Vigenere wo die Algorithmen zur Ver und Entschluesselung drin stehen ?
Ps also gibt es keinen Weg das ohne ein TextFeld Array zu lösen ?
habe hier noch meinen Versuch mit normalen 3 TextFeldern da klappt das Speichern wunderbar nur das Öffnen klappt nicht ganz
Java:
saveItem.addActionListener (new ActionListener()
 
      {
 
         public void actionPerformed (ActionEvent e) 
 
         {
 
        JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei speichern unter");
int druck = filechooser.showSaveDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();
 
try {
            BufferedWriter out = new BufferedWriter(new FileWriter(file.getAbsolutePath()));
 
          
            out.write(" \n"+eingabe.getText());
            out.write(" \n"+schluesselfeld.getText());
            out.write(" \n"+ausgabe.getText());
         
            out.close();
        
        } catch (IOException ep) {
        }
    }
 
         }
 
      });
 
 
//Datei öffnen - Fehlerhaft hier wird nur das letzte Wort der TextDatei ausgelesen
 openItem.addActionListener (new ActionListener()
      
      {
 
         public void actionPerformed (ActionEvent e) 
 
         {
 
             try {
JFileChooser filechooser = new JFileChooser();            
filechooser.setDialogTitle("Datei öffnen");
int druck = filechooser.showOpenDialog(null);
 
if(druck == JFileChooser.APPROVE_OPTION ){
File file = filechooser.getSelectedFile();
 
        BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
 
String zeile;
while((zeile = br.readLine()) != null) {
        String[] wx = zeile.split(" ");
        for (String s: wx) {
            words.add(s);
            for (int i = 0; i < words.size(); i++) {
            eingabe.setText(""+words.get(i));  //HIER MUSS WAS GEÄNDERT WERDEN
            schluesselfeld.setText(""+words.get(i));
            ausgabe.setText(""+words.get(i));
           
        
        }
 
 
}
       }
    }
}
    
 catch (IOException ioe) {
        ioe.printStackTrace();
}
             
             }
 
      });



private void textfield_create() 
{
fenster.setLayout(null);

    
eingabe = new JTextField("");
schluesselfeld = new JTextField("");
ausgabe = new JTextField("");
           
eingabe.setBounds(125, 25, 290, 50);
schluesselfeld.setBounds(125,90,290,50);
ausgabe.setBounds(125,155,290,50);

fenster.add(eingabe);
fenster.add(ausgabe);
fenster.add(schluesselfeld);

}
 
Zuletzt bearbeitet:

Dit_

Bekanntes Mitglied
wie gesagt das groesste Problem ist deinen Code zu entschlüsseln...

Soweit ich weiss, sollen im Konstruktor nur ganz wenige Sachen steht, da während des "konstruieren" wird irgendwas in JVM blockiert (falls jemand mehr davon weiß bitte um aufklärenung, weiß nicht mehr was es war :) )

Bitte hilf uns dir zu Helfen, wenn du Eclipse hast, drücke Strg+Shift+F und poste den Code noch mal. :oops:
 

dehlen

Bekanntes Mitglied
Ok habe es in Eclipse nun einrücken lassen die Textfelder in eine Seperate Methode anstatt in den Konstruktor dann habe ich die JMenuItems geordner und auch in eine seperate Methode hoffe man kann es nun etwas besser erkennen

achja und habe das TextFeld Array gelöscht und stattdessen drei Textfelder gemacht, da ich mit dem TextFeld Array nicht klar kam aber ich denke ich brauche es um mein Problem zu lösen .. naja also hier mal ohne
:
Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.io.*;

public class VigenereFrame {
	

	JTextField eingabe, schluesselfeld, ausgabe;
	JButton entschluesseln, verschluesseln,back;
	JLabel oben, mitte, unten;
	JFrame fenster;
	
	private String zufälligesWort;
	JMenu menu;
	JFileChooser filechooser = new JFileChooser();
	ArrayList words = new ArrayList();

	String input;
	int[] zahl;
	String schluessel;

	public void button_create() {
		

		
		verschluesseln = new JButton("encode");
		verschluesseln.setFont(new Font("Arial", Font.PLAIN, 11));
		entschluesseln = new JButton("decode");
		entschluesseln.setFont(new Font("Arial", Font.PLAIN, 11));
		back = new JButton("Zum Menü");
		back.setFont(new Font("Arial", Font.PLAIN, 11));

		fenster.setLayout(null);

		
		entschluesseln.setBounds(25, 25, 80, 50);
		verschluesseln.setBounds(25, 90, 80, 50);
		back.setBounds(25, 155, 80, 50);

		
		Listener_entschluesseln Encoding = new Listener_entschluesseln();
		Listener_verschluesseln Decoding = new Listener_verschluesseln();
		Listener_back Back = new Listener_back();
		entschluesseln.addActionListener(Encoding);
		verschluesseln.addActionListener(Decoding);
		back.addActionListener(Back);

		fenster.add(verschluesseln);
		fenster.add(entschluesseln);
		fenster.add(back);

	}

	private void textfield_create() 
	{
		fenster.setLayout(null);

		eingabe = new JTextField("");
		schluesselfeld = new JTextField("");
		ausgabe = new JTextField("");

		eingabe.setBounds(125, 25, 290, 50);
		schluesselfeld.setBounds(125, 90, 290, 50);
		ausgabe.setBounds(125, 155, 290, 50);

		fenster.add(eingabe);
		fenster.add(ausgabe);
		fenster.add(schluesselfeld);

	}

	private void label_create() { 
		fenster.setLayout(null);

		oben = new JLabel("zu verschluesselnder Text");
		mitte = new JLabel("Schluesselwort");
		unten = new JLabel("entschluesselter Text");

		oben.setBounds(127, 10, 230, 15);
		mitte.setBounds(127, 78, 230, 15);
		unten.setBounds(127, 143, 230, 15);

		fenster.add(oben);
		fenster.add(mitte);
		fenster.add(unten);

	}
	
	private void menu_create() {
		
		JMenuBar menuBar = new JMenuBar();
		fenster.setJMenuBar(menuBar);
		
		JMenu fileMenu = new JMenu("Optionen");
		menuBar.add(fileMenu);

		JMenu keyMenu = new JMenu("Schluessel");
		menuBar.add(keyMenu);
		
		JMenu gotoMenu = new JMenu("GoTo");
		menuBar.add(gotoMenu);

		JMenuItem genItem = new JMenuItem("Schluessel generieren");
		keyMenu.add(genItem);
		
		JMenuItem chooseItem = new JMenuItem("Eigenen Schluessel aus Textdatei");
		keyMenu.add(chooseItem);

		JMenuItem saveItem = new JMenuItem("Speichern", new ImageIcon(
				"save.png"));
		fileMenu.add(saveItem);

		JMenuItem openItem = new JMenuItem("Öffnen", new ImageIcon("open.png"));
		fileMenu.add(openItem);
		
		JMenuItem delItem = new JMenuItem("Textfelder leeren", new ImageIcon("clear.png"));
        fileMenu.add(delItem);
        
        JMenuItem copyItem = new JMenuItem("Entschlüsselten Text kopieren",new ImageIcon("copy.png"));
        fileMenu.add(copyItem);
        
        fileMenu.addSeparator();
        
        JMenuItem exitItem = new JMenuItem("Schließen", new ImageIcon("stop.png"));
        fileMenu.add(exitItem);

        JMenuItem rsaItem = new JMenuItem("Rsa");
        gotoMenu.add(rsaItem);

        JMenuItem caesarItem = new JMenuItem("Caesar");
        gotoMenu.add(caesarItem);

               //Speichern
		saveItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{

				JFileChooser filechooser = new JFileChooser();
				filechooser.setDialogTitle("Datei speichern unter");
				int druck = filechooser.showSaveDialog(null);

				if (druck == JFileChooser.APPROVE_OPTION) {
					File file = filechooser.getSelectedFile();

					try {
						BufferedWriter out = new BufferedWriter(new FileWriter(
								file.getAbsolutePath()));

						out.write(" \n" + eingabe.getText());
						out.write(" \n" + schluesselfeld.getText());
						out.write(" \n" + ausgabe.getText());

						out.close();

					} catch (IOException ep) {
					}
				}

			}

		});

		// Datei öffnen - Fehlerhaft hier wird nur das letzte Wort der TextDatei
		// ausgelesen
		openItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{

				try {
					JFileChooser filechooser = new JFileChooser();
					filechooser.setDialogTitle("Datei öffnen");
					int druck = filechooser.showOpenDialog(null);

					if (druck == JFileChooser.APPROVE_OPTION) {
						File file = filechooser.getSelectedFile();

						BufferedReader br = new BufferedReader(new FileReader(
								file.getAbsolutePath()));

						String zeile;
						while ((zeile = br.readLine()) != null) {
							String[] wx = zeile.split(" ");
							for (String s : wx) {
								words.add(s);
								for (int i = 0; i < words.size(); i++) {
									eingabe.setText("" + words.get(i));//HIER IST DER FEHLER
									schluesselfeld.setText("" + words.get(i));
									ausgabe.setText("" + words.get(i));

								}

							}
						}
					}
				}

				catch (IOException ioe) {
					ioe.printStackTrace();
				}

			}

		});

		chooseItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{

				try {
					JFileChooser filechooser = new JFileChooser();
					filechooser.setDialogTitle("Datei öffnen");
					int druck = filechooser.showOpenDialog(null);

					if (druck == JFileChooser.APPROVE_OPTION) {
						File file = filechooser.getSelectedFile();

						BufferedReader br = new BufferedReader(new FileReader(
								file.getAbsolutePath()));

						String zeile;
						while ((zeile = br.readLine()) != null) {
							String[] wx = zeile.split(" ");
							for (String s : wx) {
								words.add(s);
								zahl = new int[words.size()];
								Random zufall = new Random();
								for (int i = 0; i < words.size(); i++) {
									zahl[i] = zufall.nextInt(words.size());
									schluesselfeld.setText(""
											+ words.get(zahl[i]));

								}
							}
						}
					}

				} catch (IOException ioe) {
					ioe.printStackTrace();
				}

			}
		});

		genItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{
				
				String str = "computer|radio|taschenrechner|lehrer|polizei|praesident|subjekt|land|umwelt|software|informatik|java|applet|hangman";
				String[] temp;

				
				String delimiter = "\\|";

				
				temp = str.split(delimiter);

				
				Random randomGenerator = new Random();

				
				int randomInt = randomGenerator.nextInt(temp.length);

				zufälligesWort = new String(temp[randomInt]);

				schluesselfeld.setText("" + zufälligesWort);

			}

		});

		

		rsaItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{

				try {
					Runtime.getRuntime().exec("java -jar Rsa.jar");
				} catch (Exception ex) {

				}
				System.exit(0);

			}

		});

		caesarItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{
				try {
					Runtime.getRuntime().exec("java -jar Caesar.jar");
				} catch (Exception ex) {

				}
				System.exit(0);

			}

		});

		exitItem.addActionListener(new ActionListener()

		{

			public void actionPerformed(ActionEvent e)

			{

				

				fenster.setVisible(false);

			}

		});
		delItem.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e)

			{

				eingabe.setText("");
				schluesselfeld.setText("");
				ausgabe.setText("");

			}

		});
		copyItem.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e)

			{

				Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); 
				StringSelection selection = new StringSelection(ausgabe.getText());
				clip.setContents(selection, null);
													

			}

		});
	}
	class Listener_entschluesseln implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			input = eingabe.getText(); 
										
			input = input.toUpperCase();
										
			schluessel = schluesselfeld.getText();
			schluessel = schluessel.toUpperCase();
			Vigenere Buchstabe = new Vigenere(schluessel);
			StringBuilder output = new StringBuilder();
                        for (char i : input.toCharArray())
                        output.append(Buchstabe.decode(i));
			ausgabe.setText("" + output);

		}
	}

	// siehe ActionListener oben (das selbe nur mit .decode)
	class Listener_verschluesseln implements ActionListener {
		public void actionPerformed(ActionEvent e) {

			input = eingabe.getText();
			input = input.toUpperCase();
			schluessel = schluesselfeld.getText();
			schluessel = schluessel.toUpperCase();
			Vigenere Buchstabe = new Vigenere(schluessel);
			StringBuilder output = new StringBuilder();
			String ausgabetext = new String(output);

			for (char i : input.toCharArray())
				output.append(Buchstabe.encode(i));

			ausgabe.setText("" + output);

		}
	}

	class Listener_back implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			try {
				Runtime.getRuntime().exec("java -jar Menu.jar");
			} catch (Exception ex) {

			}
			System.exit(0);

		}
	}

	public VigenereFrame() {
		fenster = new JFrame("Vigenere-Verschluesselung"); 
		fenster.setSize(450, 300);
		fenster.setLocation(512, 400);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		button_create();
		textfield_create();
		label_create();
		menu_create();

		

		fenster.setVisible(true);

	}


	public static void main(String[] args) {
		VigenereFrame g = new VigenereFrame();

	}

}
 

diggaa1984

Top Contributor
Java:
String zeile;
while((zeile = br.readLine()) != null) {
    String[] wx = zeile.split(" ");
    for (String s: wx) {
        words.add(s);
        for (int i = 0; i < words.size(); i++) {
            eingabe.setText(""+words.get(i));
            schluesselfeld.setText(""+words.get(i));
            ausgabe.setText(""+words.get(i));
        }
    }
}

wir nicht zufällig in ALLEN textfeldern das selbe (letzte) wort der datei abgelegt?
wenn ja, dann geh das doch mal schritt für schritt mit papier und bleistift durch!

pauschal würde ich sagen ists so:

du liest die erste zeile ein, die is leer (siehe dein speichern-algorithmus) .. nix sinnvolles passiert

du liest die 2. zeile ein, dort befindet sich eine wortfolge drin (die aus eingabe) .. das wird nun in alle felder geschrieben (da words ja nur 1 wort beinhaltet im moment)

du liest die 3. zeile ein, dort befindet sich wieder eine wortfolge (die aus schluesselfeld) .. die for-schleife trägt nun erneut erst in alle felder die wortfolge aus der 2. zeile ein, danach (ist ja noch ein weiterer eintrag in words enthalten) .. trägt es die zweite wortfolge aus der dritten zeile in alle felder ein

.. analog vierte zeile, am ende steht die 3. wortfolge aus der 4. zeile der textdatei (ursprünglich ausgabe-textfeld) in allen textfeldern!


das is nur n problem der abfolge .. geh das nochmal im kopf durch dann wirst du die lösung selbst finden
 
Zuletzt bearbeitet:

dehlen

Bekanntes Mitglied
Ja das er das so macht war mir auch klar das words.get(i); war mehr ein Platzhalter
allerdings weis ich nicht wie ich auf die einzelnen Komponente der ArrayList zugreifen kann sodass ich dem Programm sagen kann nehme das erste wort der arraylist und schreibe es in eingabe und dann nimm das zweite wort des arraylist und schreibe es in schluesselfeld
hatte es so versucht eingabe.setText(""+words.get(1)); aber das hat auch nicht funktioniert .. auf dem Blatt weis ich es nur ich weiß nicht wie ich es dem Programm sagen soll
 

diggaa1984

Top Contributor
du musst dir in dem fall eh erstma einig werden ob du nun ein Array von Textfeldern hast oder nicht, machbar ist es allemal!

Java:
/* beim coden fiel mir grad auf .. warum splittest du den input nach leerzeichen?
 * damit erhältst du im zweifel mehr einträge in der word-arrayList als du textfelder hast 
 */

String zeile;
while((zeile = br.readLine()) != null) {
    if (! zeile.trim().equals(""))
        words.add(zeile);
}

for (int i = 0; i < words.size(); i++) {
    felder[i].setText(words.get(i));
}

/* funktioniert aber nur, wenn du wirklich exakt soviele einträge in words hast, wie textfelder,
 * und wenn du sicherstellst, das felder[0] immer eingabe oder was auch immer ist, das hängt
 * davon ab in welcher reihenfolge du die daten abspeicherst. Hier wird also erster String in erstes
 * Feld gelegt! Zweiter String in 2. Feld, etc.
 * 
 * weiterhin  solltest du beim speichern erst den Textinhalt und dann den zeilenumbruch angeben ..
 * du hast momentan am anfang eine leerzeile. ich habe das erstmal abgefangen und ignoriere leere 
 * zeilen, inwiefern das für dich ok ist, musst du selbst wissen
 */

oder du machst es ohne array

Java:
String zeile;
while((zeile = br.readLine()) != null) {
    if (! zeile.trim().equals(""))
        words.add(zeile);
}

if (words.size() == 3) {
    eingabe.setText(words.get(0));
    schluesselfeld.setText(words.get(1));
    ausgabe.setText(words.get(2));
}

/* auch hier gilt, die prüfung bezüglich inhalt der zeilen (leerzeilen erlaubt oder nich!?) ..
 * in dem code werden leerzeilen ignoriert 
 */


EDIT: man könnte die krücke über die words-arraylist im 1. Codebeispiel auch weglassen und zeile direkt in die textfelder eintragen, wenn man sich eine zählvariable zuhilfe nimmt.
 
Zuletzt bearbeitet:

dehlen

Bekanntes Mitglied
ah super perfekt habe mich für letzteres entschieden und klappt wunderbar =)
hm ja die TextDatei hat immer genau so viele Strings wie ich Textfelder habe daran habe ich gedacht hatte das schon so ähnlich versucht nur eben mit ner for Schleife anstatt einer if und dann hatte er es immer überschrieben
Danke auf jeden Fall!!
 

dehlen

Bekanntes Mitglied
Ah verdammt zu früh gefreut -.-
also das öffnen klappt zwar aber nur solange ich die Textfelder nicht per "Textfelder leeren" leere.
Sprich : das öffnen klappt aber sobald ich die Textfelder mit dem von mir eingebauten MenuItem lösche klappt das Öffnen nicht mehr. Lösche ich den Text manuell aus den Felder klappt alles. Weiß jemand woran das liegt ?
 

diggaa1984

Top Contributor
kannst du mal aktuelleren code reinstellen, oder mach n anhang .. oben werden noch felder genutzt beim löschen unten beim öffnen, direkter zugriff .. kann zwar unwichtig sein, aber ein aktueller überblick würde helfen ^^
 

dehlen

Bekanntes Mitglied
Hm hat sich wie von Geisterhand selbst gelöst habe nun ein GridLayout hinzugefügt anstatt des setLayout(null); und jetzt klappt auf einmal .. keine Ahnung warum naja mit solls recht sein ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
J Problem mit String von Textfeld Java Basics - Anfänger-Themen 13
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben