Zum Inhalt springen

String per Button umwandeln


Dr.Ikarus

Empfohlene Beiträge

Hallo zusammen,

ich hab ein kleines Problem.

ich habe ein GUI, in das man ein Wort eintragen soll, dass dann über einen Schlüssel, den man auch eintragen kann, verschlüsselt wird.

Also NormalerText --> Schlüssel --> verschlüsselterText.

Den Code für die Verschlüsselung und die GUI hab ich schon geschrieben, aber wie kann ich diese beiden verknüpfen.

Oder anders: Wie kann ich den Button dazu bewegen, den Text mit der Verschlüsselung umzuwandeln?

Hier ist der Code für die GUI:


package chiffren;


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


public class Gui extends JFrame{

	/**

	 * 

	 */

	private static final long serialVersionUID = 1L;

	JButton btn;

		// 

	public Gui (){

		setTitle ("VerSchluessel");                       //Name

		getContentPane().setBackground(Color.LIGHT_GRAY); //Farbe

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //Schließen

		setSize(300,200);


		JPanel Leinwand = new JPanel();

		getContentPane().add(Leinwand);


		// Button1

		/* btn = new JButton("Test");

		btn.setPreferredSize(new Dimension(130, 25));

		btn.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {

				((JButton)e.getSource()).setText("Test Ende");

			}

		});

		Leinwand.add(btn);*/



		//Textfeld 0

		JTextField tf0 = new JTextField("Datei einfügen");

		Leinwand.add(tf0);		

		tf0.setPreferredSize(new Dimension(150,30));


		//Textfeld 1

		JTextField tf1 = new JTextField("Text eingeben");

		Leinwand.add(tf1);		

		tf1.setPreferredSize(new Dimension(150,30));


		//Textfeld 2

		JTextField tf2 = new JTextField("Schlüssel eingeben");

		Leinwand.add(tf2);		

		tf2.setPreferredSize(new Dimension(75,30));



		// Button2

		btn = new JButton("Verschlüsseln");

		btn.setPreferredSize(new Dimension(150, 25));

		btn.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {

				((JButton)e.getSource()).setText("Test Ende");

			}

		});

		Leinwand.add(btn);


		//Textfeld 3

		JTextField tf3 = new JTextField("Ergebnis");

		Leinwand.add(tf3);		

		tf3.setPreferredSize(new Dimension(150,30));


	}

// Fenstereigenschaften

	public static void main(String[] args) {

		Gui frame = new Gui();

		frame.setSize(100,200);

		frame.setLocation(30,300);

		frame.pack();

		frame.setVisible(true);}


	}


Und hier für die verschlüsselung:


public class Enigma{

	public static void main (String[]args){}

	public String decrypt(String cryptText, int key) {// Entschlüsseln

		StringBuffer ergebnis = new StringBuffer();

		key %= 26;

		for (int i = 0; i < cryptText.length(); i++) {

			int min = 65, max = 90;

		}

		return cryptText;


	}


	public String encrypt(String plainText, int key) {// Verschlüsseln

		String ergebnis = "";

		key %= 26;

		for (int i = 0; i < plainText.length(); i++) {

			int min = 65, max = 90;

			int c = plainText.charAt (i);

			if ((c<'A')||(c>'z')||(c>'Z')&&(c<'a')){

				ergebnis +=((char)c);

				continue;

			}

			if (c>max) {

				min += 32;

				max += 32;

			}

			int cc = c + key;

			if (cc > max)

				c= cc - 26;

			else

				c= cc;

			ergebnis +=((char) c);

		}

		return ergebnis.toString();


	}}

Ich hab gelesen, dass man sowas über einen EventManager lösen kann, aber ich verstehe als Noob nicht ganz was das bringt. Geht das denn nicht auch anders?

Über Tipps und/oder Anregungen würde ich mich sehr freuen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Funktion die ein JButton ausführen soll, wenn er einen Klick registriert, wird über einen ActionListener angegeben.

Das heißt, wenn dein JButton vom Benutzer gedrückt wird, wird die actionPerformed()-Method deines ActionListeners ausgeführt.

Das heißt, wenn du deinen Text verschlüsseln willst, sobald der JButton gedrückt wird, musst du dieses in dem passenden ActionListener implementieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Hilfe, ich hab's hinbekommen. Jetzt habe ich allerdings eine andere Frage.

Ich hab einen Button, der auf Druck ein neues Fenster öffnet, aus dem man TextDateien anklicken kann...ähnlich dem Öffnen Fenster in Windows.

Wenn ich jetzt eine Datei anwähle und öffne wird in der konsole nicht der Inhalt angezeigt, sondern nur der Dateiname.

Wie bekomme ich es hin, den Inhalt der Textdatei anzuzeigen?

Da muss ich ja wahrscheinlich in der Zeile

System.out.println(selectedFile.getName());
etwas ändern? Oder sollte ich an geeigneter Stelle einen Buffered Reader einbauen? Bisher hab ich folgenden Code:

input.addActionListener(new ActionListener() {

		      public void actionPerformed(ActionEvent ae) {

		        JFileChooser fileChooser = new JFileChooser();

		        int returnValue = fileChooser.showOpenDialog(null);

		        if (returnValue == JFileChooser.APPROVE_OPTION) {

		          File selectedFile = fileChooser.getSelectedFile();

		          System.out.println(selectedFile.getName());

		        }

		      }

		    });

Danke für eventuelle Hilfe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dass bei dir auf der Konsole nur der Dateiname ausgegeben wird, ist ja auch richtig, mit File#getFileName() wird nur der Dateiname ausgegeben.

Wenn du den Inhalt dieser Datei haben willst, musst du diese auslesen, das geht entweder wie du schon sagtest, mit einem BufferedReader, oder du nimmst dir die Klasse Scanner zur Hilfe.

Mit derer kannst du die Datei dann zeilenweise auslesen und wenn du den Inhalt speicherst, damit weiterarbeiten wie du willst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay danke für die Hilfe ich hab alles hinbekommen:

Hier für die Nachwelt:


input.addActionListener(new ActionListener() {

		      public void actionPerformed(ActionEvent ae) {

		        JFileChooser chooser = new JFileChooser();

		        int returnValue = chooser.showOpenDialog(null);

		        if (returnValue == JFileChooser.APPROVE_OPTION) {

		        	einlesen.setText("Diese Datei öffnen:" +

		        	chooser.getSelectedFile().getParentFile());

		        	klartext.setText("Diese Datei öffnen;" +

		        	chooser.getSelectedFile().getAbsoluteFile());

		          File selectedFile = chooser.getSelectedFile();

		          System.out.println(selectedFile.getAbsoluteFile());



		          try {

		        	  BufferedReader br = new BufferedReader(new FileReader(chooser.getSelectedFile().getAbsoluteFile()));


		        	  String zeile = br.readLine();

		        	  while (zeile != null) {

		        		  klartext.setText(zeile);

		        		  zeile = br.readLine();

		        		  		        	  }


		          }catch (IOException io) {

		        	  io.printStackTrace();

		          }

		      		        }

		      }

		    });

Danke nochmal :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...