import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.Scanner;
public class zusatzaufgabe extends JFrame implements ActionListener
{
private JTextField ef, suf;
private JTextArea af;
private JScrollPane sf;
private JPanel dp, bp, sp;
private JButton sub, ab, zb, sb, eb;
private JLabel dn, fl, sn;
// Im Konstruktor werden die Objekte angelegt und die GUI aufgebaut
public zusatzaufgabe()
{
super("zusatzaufgabe");
dp = new JPanel();
bp = new JPanel() ;
sp = new JPanel();
Dimension buttonGroesse = new Dimension(120, 26);
Dimension labelGroesse = new Dimension(140, 26);
ab = new JButton("Anzeigen");
ab .setPreferredSize(buttonGroesse);
ab .addActionListener(this);
zb = new JButton("Zurücksetzen");
zb .setPreferredSize(buttonGroesse);
zb .addActionListener(this);
sb = new JButton("Speichern");
sb .setPreferredSize(buttonGroesse);
sb .addActionListener(this);
sub = new JButton("Search");
sub .setPreferredSize(buttonGroesse);
sub .addActionListener(this);
eb = new JButton("Ende");
eb .setPreferredSize(buttonGroesse);
eb .addActionListener(this);
dn = new JLabel("dateiname");
dn .setPreferredSize(labelGroesse);
fl = new JLabel("");
fl .setPreferredSize(labelGroesse);
ef = new JTextField("dateiname ", 12);
ef .setPreferredSize(labelGroesse);
ef .selectAll();
ef .setActionCommand("Anzeigen");
ef .addActionListener(this);
sn = new JLabel("Suche");
sn .setPreferredSize(labelGroesse);
suf = new JTextField("such dateiname ", 12);
suf .setPreferredSize(labelGroesse);
suf .selectAll();
suf .setActionCommand("Anzeigen");
suf .addActionListener(this);
af = new JTextArea(13, 27);
af .setLineWrap(true);
af .setWrapStyleWord(true);
af .setMargin(new Insets(0, 5, 0, 2));
sf = new JScrollPane(af);
// Die Container fuellen / zusammenbauen
sp.setBorder(new TitledBorder("Search"));
sp.add(sn);
sp.add(suf);
sp.add(sub);
dp.setLayout(new FlowLayout(FlowLayout.LEFT));
dp.add(dn);
dp.add(ef);
dp.add(fl);
dp.setLayout(new GridLayout(2,1, 5,5));
bp.add(ab);
bp.add(zb);
bp.add(sb);
bp.add(eb);
bp.setLayout(new GridLayout(2,2, 5, 5));
this.setIconImage(Toolkit.getDefaultToolkit().getImage("bild01"));
getContentPane().setLayout(new FlowLayout());
getContentPane().add(sp);
getContentPane().add(dp);
getContentPane().add(sf);
getContentPane().add(bp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 300);
setSize(340, 450);
}
// Suchfunktionen anfang
//private int suchDatei(String name) throws Exception {
private char[] erzeugen(int zahlen) {
char[] z = new char[zahlen];
for (int i = 0; i < zahlen; i++) {
if (i + 1 < 10) {
System.out.print("0" + (i + 1) + " ");
}
else {
System.out.print((i + 1) + " ");
}
}
System.out.println();
for (int i = 0; i < zahlen; i++) {
z[i] = (char)(Math.random()*26 + 97);//(char) Tools.zufall(97, 122);
System.out.print(z[i] + " ");
}
return z;
}
private static char input() {
System.out.println("\n\nNach welchen Zeichen soll gesucht werden?");
System.out.print("Zeichen: ");
char zeichen = new Scanner(System.in).next().charAt(0);//Eingabe.readChar();
return zeichen;
}
private static int[] suche(char suche, int zufall, char[] zeichen) {
int n = 0;
for (int i = 0; i < zufall; i++) {
if (zeichen[i] == suche) {
n++;
}
}
int[] ein = new int[n];
n = 0;
for (int i = 0; i < zeichen.length; i++) {
if (suche == zeichen[i])
{
ein[n] = i;
System.out.println(i + "| "); // Zum testen
n++;
}
}
return ein;
}
private static void ausgabe(int[] g)
{
System.out.print("\nGefunden auf Position: ");
for (int i = 0; i < g.length; i++)
{
if (g[i] + 1 < 10)
{
System.out.print("0" + (g[i] + 1) + " ");
}
else
{
System.out.print(g[i] + 1 + " ");
}
}
}
//Suchfunktionen ende
//Wörter zählen anfang
private static int skipWord(String name, int currentCharIndex) throws Exception {
//das erste zeichen suchen, was kein leerzeichen ist
af.setText("");
while(name.charAt(currentCharIndex++)==' '){
if(currentCharIndex+1==name.length()) return name.length();
}
//ein wort überspringen
while(name.charAt(currentCharIndex++)!=' '){
if(currentCharIndex+1==name.length()) return name.length();
}
//den veränderten index zurückgeben
return currentCharIndex;
}
// Wörterzählen ende
private int dateiLesen(String name) throws Exception
{
BufferedReader in = new BufferedReader(new FileReader(name));
String zeile = "";
int anzahl = 0;
af.setText("");
while((zeile = in.readLine()) != null)
{
anzahl += zeile.length() + 1; // die 1, um Zeilenende zu beruecksichtigen.
af.append(zeile + "\n");
}
return anzahl;
}
private int dateiSpeichern(String name) throws Exception
{
int anzahl = 0;
BufferedWriter out = new BufferedWriter(new FileWriter(name));
String text = af.getText();
anzahl = text.length();
out.write(text, 0, anzahl); // Ab Index 0 "anzahl" Zeichen speichern
out.close();
return anzahl;
}
// ActionListener für dieButtons.
public void actionPerformed(ActionEvent event)
{
/*if(event.getActionCommand().equals("Search")) {
String name = sub.getText();
try {
int zuErzeugendeZahlen = 20;
char[] zeichen = erzeugen(zuErzeugendeZahlen);
char ein = input(name);
int[] gefunden = suche(ein, zuErzeugendeZahlen, zeichen);
af.setText(ausgabe(gefunden));
af.requestFocusInWindow();
af.setCaretPosition(0);
} catch (Exception e) {
fl.setText("Suchfehler!");
}
}*/
if(event.getActionCommand().equals("Anzeigen"))
{
String name = ef.getText();
try
{
String counter = skipWord(name);
//int counter;
int index=0;
for(counter=0; index<name.length(); counter++){
index=skipWord(name,index);
}
System.out.println("Wörter gezählt: "+counter);
int anzahl = dateiLesen(name);
fl.setText(anzahl + " Zeichen gelesen ");
af.requestFocusInWindow();
af.setCaretPosition(0);
}
catch (Exception e)
{
fl.setText("Dateifehler!");
}
}
if(event.getActionCommand().equals("Speichern"))
{
String name = ef.getText();
try
{
int anzahl = dateiSpeichern(name);
fl.setText(anzahl + " Zeichen gespeichert");
}
catch (Exception e)
{
fl.setText("Dateifehler! Schreibrechte?");
}
}
else if(event.getActionCommand().equals("Zurücksetzen"))
{
ef.setText("dateiname eingeben");
ef.requestFocus();
ef.selectAll();
fl.setText("");
af.setText("");
}
else if(event.getActionCommand().equals("Ende"))
{
System.exit(0);
}
}
public void showGUI()
{
setVisible(true);
}
public static class MyRunner implements Runnable
{
zusatzaufgabe ref;
public MyRunner(zusatzaufgabe r)
{
ref = r;
}
public void run()
{
ref.showGUI();
}
}
public static void main(String[] args)
{
zusatzaufgabe frame = new zusatzaufgabe();
MyRunner runner = new MyRunner(frame);
EventQueue.invokeLater(runner);
//suchfunktionen
}
}