GUI + TextArea + inhalt der wörter zählen

Status
Nicht offen für weitere Antworten.

dabidu

Aktives Mitglied
Hallo Alle Zusammen

komme nicht weiter, deshalb bitte ich eure Hilfe.

Hab ein GUI, dass ein TextArea enthält, in dem textarea soll ein Inhalt reinkommen, und die inhalt soll die gesamt der buchstaben, oder wörter ausgeben, kommme aber nicht weiter,

wie kann ich wörter des Inhaltes ausgeben, mit readChar,
aber wie mach ich das, dass die wörter gezählt werden.

Soll es ein mix von speichern und dateiausgabe sein?
 

0x7F800000

Top Contributor
Ich nehme mal an, dass es am Auslesen des Inhaltes nicht scheitern wird, diese TextArea wird schon irgendwas á la "getText():String" aufweisen, frag eclipse, ich weis es nich...

Das Wörter-Zählen in gegebenen Strings würde ich etwa so machen:
kleines Beispielprogrammchen:

Code:
public class WordCounter {
	
private static int skipWord(String str, int currentCharIndex){
	//das erste zeichen suchen, was kein leerzeichen ist
	while(str.charAt(currentCharIndex++)==' '){
		if(currentCharIndex+1==str.length()) return str.length(); 
	}
	//ein wort überspringen
	while(str.charAt(currentCharIndex++)!=' '){
		if(currentCharIndex+1==str.length()) return str.length(); 
	}
	//den veränderten index zurückgeben
	return currentCharIndex;
}
	
public static void main(String[] args){
	
	//dein text
	String str="     Das hier       ist ein     Text mit acht wörtern";
	int index=0;
	int counter;
	for(counter=0; index<str.length(); counter++){
		index=skipWord(str,index);
	}
	System.out.println("Wörter gezählt: "+counter);
	
}
}

wenn das gar nicht das ist was du haben willst, dann hol nochmal tief Luft und schreib in vollständigen Sätzen was du eigentlich haben willst ;) Was meinst du mit mix von Datei Eingabe/Ausgabe, wozu soll das gut sein?
 

dabidu

Aktives Mitglied
So jetzt hab ich ein fertiges GUI gehabt, die die wörter in der Textarea steht aufnimmt.
Bei eingeben einer Dateiname, soll das Inhalt, in die TextArea erscheinen,
Das Inhalt soll in der TextArea die Wörteranzahl anzeigen.

Unter der Label "Dateiname" ist ein weites Label, die die anzahl von den Buchstaben darstellt,
darunter soll noch die Anzahl der Wörter dargestellt werden, nur kann ich jetzt die nicht konfigurieren.

Können wir Schritt für Schritt durchgehen, und versuchen das Problem zu lösen?

Ziel ist es: Das Inhalt des Textareas soll die Anzahl der buchstaben und wörter anzeigen.

Code:
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
	   

    }
}
 

0x7F800000

Top Contributor
ich seh grad das heisst "zusatzaufgabe"... Kann man irgendwo die originale Aufgabenstellung anschauen? Vielleicht ein Link? Irgendwie raff ich nach wie vor nicht, was jetzt in dieses TextField da gehört, sry^^ :lol: Was du aus der wörterzähl funktion gemacht hast, versteh ich auch nicht^^ warum wirft die von mir angedeutete funktion plötzlich exceptions? :lol: *rofl*
 

0x7F800000

Top Contributor
hier nochmal eine vollständige wörterZähl-funktion, die keine exceptions zu spucken braucht^^

Code:
private static int countWords(String str){
	int index=0;
	int counter;
	for(counter=0; index<str.length(); counter++){
		//das erste zeichen suchen, was kein leerzeichen ist
		while(str.charAt(index++)==' '){
			if(index+1==str.length()){
				index=str.length(); break;
			}
		}
		//ein wort überspringen
		while(str.charAt(index++)!=' '){
			if(index+1==str.length()){
				index=str.length(); break;
			}
		}
	}
	return counter;
}

ich raff gar nicht was du da alles machst...
Runnable? Was soll denn hier irgendwohin rennen, das ist doch ein prog das einfach in ruhe wartet bis der benutzer irgendetwas eingibt, 100% ereignissorientiert, ich würds deswegen schon ein wenig anders strukturieren... Wie gesagt, wäre schön die eigentliche aufgabe zu sehen, du hast hier ja schon ne menge holz produziert, es sieht rein optisch imho ganz gut aus :toll: , nur weiss ich nicht was es tun soll^^ :bae:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Inhalt aus TextArea verarbeiten AWT, Swing, JavaFX & SWT 4
L TextArea Zeichenabstand gleich machen AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
D Hohe Prozessorauslastung bei Ausgabe auf TextArea AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
Hatsi09 TextArea formattieren AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
K JavaFX: TextArea updated nicht AWT, Swing, JavaFX & SWT 7
M JavaFX TextArea disabled - ScrollBar enabled AWT, Swing, JavaFX & SWT 3
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
MrSnake JavaFX TextArea updated nicht AWT, Swing, JavaFX & SWT 22
N JavaFX TextArea Updaten bevor Prozess gestartet wird AWT, Swing, JavaFX & SWT 7
B Java FX FXML Textarea SceneBuilder als XML Editor AWT, Swing, JavaFX & SWT 1
T JavaFX System.out.println in TextArea AWT, Swing, JavaFX & SWT 15
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
thobren JavaFX Inhalte aus dynamischen vbox mit TextArea auslesen AWT, Swing, JavaFX & SWT 9
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
M JavaFX TextArea einzelne Buchstaben färben AWT, Swing, JavaFX & SWT 3
M JavaFX TextArea richtig formatieren AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
S Die Rücktaste und Entfernen in einer Textarea blockieren AWT, Swing, JavaFX & SWT 3
S TextArea get Selected row(Text) AWT, Swing, JavaFX & SWT 6
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
V Swing Update Textarea AWT, Swing, JavaFX & SWT 2
E TextArea - Maximale Zeichenanzahl AWT, Swing, JavaFX & SWT 2
N Swing teilstring in textarea fett machen AWT, Swing, JavaFX & SWT 13
J Swing TextArea mit nicht-editierbarem Text AWT, Swing, JavaFX & SWT 7
W Vergleich zweier Strings und schreiben in Textarea AWT, Swing, JavaFX & SWT 12
R AWT TextArea schreibunfähig machen AWT, Swing, JavaFX & SWT 5
J Werkzeugleiste für TextArea? AWT, Swing, JavaFX & SWT 10
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
S Textarea und Enter AWT, Swing, JavaFX & SWT 5
El_Lobo Swing Swing TextArea und JTextField werden nicht aktualisiert AWT, Swing, JavaFX & SWT 2
R Textarea zeigt Text nicht an AWT, Swing, JavaFX & SWT 5
H TextArea zeigt kein Text an AWT, Swing, JavaFX & SWT 6
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
C TextArea Ausgabe immer ganz oben AWT, Swing, JavaFX & SWT 3
C Konsolenausgabe in TextArea ausgeben AWT, Swing, JavaFX & SWT 8
P Swing Methodenaufruf beeinflusst TextArea nicht. AWT, Swing, JavaFX & SWT 6
S TextArea ausgabe ohne JFrame zu implementieren AWT, Swing, JavaFX & SWT 2
M Swing Eine andere Klasse über Button starten und in TextArea ausgeben AWT, Swing, JavaFX & SWT 13
A Swing Text von System.out.printIn in eine TextArea übergen AWT, Swing, JavaFX & SWT 12
S Sobald ich TextArea mit Text fülle alles weg? AWT, Swing, JavaFX & SWT 5
P TextArea Größenänderung AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
H anderes font in textarea AWT, Swing, JavaFX & SWT 2
E Datei in TextArea anzeigen AWT, Swing, JavaFX & SWT 12
Luy Per TAB-Taste aus TextArea wieder raus? AWT, Swing, JavaFX & SWT 5
H AWT TextArea, TextListener AWT, Swing, JavaFX & SWT 5
D Swing [BoxLayout] Nur TextArea und nicht TextField vergroessen AWT, Swing, JavaFX & SWT 2
W JTextArea/TextArea kriegt keinen Fokus AWT, Swing, JavaFX & SWT 6
A Strings an Textarea anderer Klasse append(en) AWT, Swing, JavaFX & SWT 12
U Problem mit dem TextArea.appen()- Befehl AWT, Swing, JavaFX & SWT 2
G Textarea zeigt Text erst am Schluss an AWT, Swing, JavaFX & SWT 2
W JTextArea vs TextArea AWT, Swing, JavaFX & SWT 3
K TextArea auf Scrollpane AWT, Swing, JavaFX & SWT 3
A Dateien in TextArea ausgeben AWT, Swing, JavaFX & SWT 6
G Textarea soll automatisch mitrollen AWT, Swing, JavaFX & SWT 2
G Feste Größe einer TextArea AWT, Swing, JavaFX & SWT 2
G Kontextmenü zum kkopieren in einer TextArea AWT, Swing, JavaFX & SWT 5
V Hilfe :( bekomme textarea nicht versetzt AWT, Swing, JavaFX & SWT 2
M TextArea relativ zur Fenstergröße AWT, Swing, JavaFX & SWT 14
Y Zahlen aus einer Textarea auslesen AWT, Swing, JavaFX & SWT 2
V textarea Problem Positionierung AWT, Swing, JavaFX & SWT 2
G textarea.read funzt net in Jar-Datei AWT, Swing, JavaFX & SWT 7
K Center Text in TextArea AWT, Swing, JavaFX & SWT 8
ModellbahnerTT Ersatz für Textarea AWT, Swing, JavaFX & SWT 13
K Zeilen von TextArea auswählen AWT, Swing, JavaFX & SWT 3
C TextArea Problem :( TextArea über komplettem JFrame AWT, Swing, JavaFX & SWT 2
S Text in Textarea über empfangenen Socketstream anzeigen AWT, Swing, JavaFX & SWT 4
M Problem mit Layout wegen Textarea AWT, Swing, JavaFX & SWT 3
F Scrollpane scrollt immer zur TextArea AWT, Swing, JavaFX & SWT 8
F Graphics2D scale und Positionierung einer TextArea AWT, Swing, JavaFX & SWT 8
J TextArea unkontrollierbar AWT, Swing, JavaFX & SWT 4
G toString -> TextArea AWT, Swing, JavaFX & SWT 2
F Einlesen von text in textArea mittels for-schleife AWT, Swing, JavaFX & SWT 3
L TextArea AWT, Swing, JavaFX & SWT 6
X textarea updaten bevor eine Methode aufegerufen wird AWT, Swing, JavaFX & SWT 6
G keyListener & textarea AWT, Swing, JavaFX & SWT 2
C Text in TextArea gestalten AWT, Swing, JavaFX & SWT 2
M Farben im TextArea AWT, Swing, JavaFX & SWT 5
N TextArea positionieren AWT, Swing, JavaFX & SWT 3
P TextArea zeilenumbruch AWT, Swing, JavaFX & SWT 7
André B. formatierung in TextArea AWT, Swing, JavaFX & SWT 7
C Textarea kontinuerlich updaten AWT, Swing, JavaFX & SWT 3
D setCaretPosition, nicht-editierbare TextArea AWT, Swing, JavaFX & SWT 8
J TextArea begrenzen AWT, Swing, JavaFX & SWT 6
P [TextArea] Text Formatieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben