// Import der nötigen Bibliotheken
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.JComponent.*;
import java.util.Random;
// Vererbung und Installation eines Interface
public class Alphabetisierung extends JFrame implements ActionListener
{
// Komponenten und Instanzvariablen
JFrame fenster = new JFrame("Alphabetisierung");
// Komponenten
JLabel eingabeText = new JLabel("Wirklicher Text:");
JTextField eingabeFeld = new JTextField(10);
JLabel skill = new JLabel("Sprachfähigkeit");
JTextField skillfeld = new JTextField(3);
JLabel percent = new JLabel("%");
JButton codeButton = new JButton("kodieren");
JButton loeschButton = new JButton("löschen");
JLabel ausgabeText = new JLabel("Dargestellter Text:");
JTextField ausgabeFeld = new JTextField(10);
// Instanzvariablen
String klartext;
String codetext;
int getskill = 0;
public Alphabetisierung()
{
super("Alphabetisierung");
JPanel Inhalt = new JPanel(); // Anlegen eines neuen Panels im Fenster
setContentPane(Inhalt);
fenster.setContentPane(Inhalt);
fenster.setLayout(null); // Das Layout von fenster wird "null" gesetzt (kein Layout)
fenster.setSize(400, 200); // Einstellung der Fenstergröße auf 800x600
fenster.setResizable(false); // Fenstergröße nicht mehr veränderbar
eingabeText.setBounds(10,10,100,20);
Inhalt.add(eingabeText);
eingabeFeld.setBounds(10,40,360,20);
Inhalt.add(eingabeFeld);
skill.setBounds(10,70,100,20);
Inhalt.add(skill);
skillfeld.setBounds(105,70,40,20);
Inhalt.add(skillfeld);
percent.setBounds(146,70,9,20);
Inhalt.add(percent);
codeButton.setBounds(160,70,90,20);
Inhalt.add(codeButton);
loeschButton.setBounds(260,70,90,20);
Inhalt.add(loeschButton);
ausgabeText.setBounds(10,100,120,20);
Inhalt.add(ausgabeText);
ausgabeFeld.setBounds(10,125,360,20);
Inhalt.add(ausgabeFeld);
codeButton.addActionListener(this);
loeschButton.addActionListener(this);
WindowListener listener = new WindowAdapter() // WindowListener überprüft Aktionen eines Fensters (zB. schließen)
{
public void windowClosing(WindowEvent we)
{System.exit(0);}
};
fenster.addWindowListener(listener); // fenster zum windowListener hinzufügen
fenster.setVisible(true); // fenster sichtbar machen
}
// interface Button-Listener
public void actionPerformed(ActionEvent ae)
{
Object eventQuelle = ae.getSource();
if (eventQuelle == codeButton)
{ code(); }
if (eventQuelle == loeschButton)
{
eingabeFeld.setText("");
ausgabeFeld.setText("");
skillfeld.setText("");
}
}
public void code()
{
int[] mark={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
klartext = eingabeFeld.getText();
ausgabeFeld.setText(""); // Ausgabefeld leeren
if(eingabeFeld.getText()=="")
{System.out.println("Bitte im Eingabefeld ein Wort/Satz eingeben.");
return;
}
if(skillfeld.getText()=="")
{System.out.println("Bitte im Sprachfähigkeitsfeld eine Zahl von 1 bis 100 eingeben.");
return;
}
getskill = 0;
getskill = Integer.parseInt(skillfeld.getText()); // getskill auf dem Feld hollen
if(getskill>100){getskill = 100;}
if(getskill<0){getskill = 0;}
int temp;
char[] chars = klartext.toCharArray();
getskill=((getskill*chars.length)/100); // Anzahl der Orginal übrig bleibenden Zeichen
int count=0;
for(int i=0;i<1000;i++) // Zeichen markieren, die nicht verändert werden sollen
{
if(getskill !=0)
{
Random zufall = new Random();
temp = (zufall.nextInt(chars.length));
if(mark[temp]==1)
{
//nichts
}
if(mark[temp]==0){mark[temp]=1; getskill = getskill -1;}
}
if(getskill ==0){i=1000;}
}
for (int i = 0; i< chars.length;i++) // alle unmarkierten Zeichen werden durch zufällige neue Ersetzt
{
Random zufall = new Random();
temp = (zufall.nextInt(300))+1; // 26 ; A = 65
if(mark[i]==1)
{
//nichts
}
if(mark[i]==0)
{
if ((char)((int)chars[i])<65)
{}
else
chars[i]= (char)( (((int)chars[i] + temp) % 26)+65);
}
}
codetext = new String(chars);
ausgabeFeld.setText(codetext);
}
public void main(String[] args) {new Alphabetisierung();}
}