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!
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.
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: