Editor hängt sich auf

Status
Nicht offen für weitere Antworten.

Oger

Mitglied
Hallo Zusammen !

Ich schreibe grad einen kleinen Editor als Projekt.

Dabei habe ich die Funktion Text suchen und ersetzen eingebaut.

Für den Suchtext habe ich ein JTextField
Code:
JTextField SuchText = new JTextField(30);

Dann packe ich den Inhalt in einen String
Code:
String search = SuchText.getText();

Das passiert 2 Mal, da ich ja auch einen Text zum ersetzen habe...

Wenn ich meinen Editor nun starte und die Suchen und Ersetzen Funktion aktiviere, dann öffnet sich zwar das kleine Fenster mit den Textfeldern, aber es wird kein Inhalt angezeigt und der Editor hängt sich auf....

Bei einem Textfeld dauert es ein paar Sekunden und dann erscheint es.

Aus welchem Grund hängt sich die ganze Sache auf? Wird irgendwo etwas überladen oder so ?

MFG
Oger
 

outbreaker

Bekanntes Mitglied
wir wäre es mal mit etwas mehr Code oder der Fehlermeldung!?
:autsch:

die beiden Codezeilen die da stehen sind richtig ;-)

aber der zusammenhang in Code wäre nicht schlecht
 
S

SlaterB

Gast
tja, an den beiden geposteten Code-Zeilen liegt es sicherlich nicht,
was in deinen restlichen 1000 Zeilen schiefläuft kann aber doch niemand erahnen,

gibts keine Exception in der Konsole?
dann kann man noch am ehesten auf irgendeine Endlosschleife tippen,
sich gegenseitig aufrufende Operationen, Listener die auf Intialisierung von GUI-Elementen reagieren usw.,
da hilft eigentlich nur Debugging, Schritt für Schritt den Weg des Programms bis zum Fehler verfolgen, einzelne Komponenten auskommentieren
 

Oger

Mitglied
Also hier der gesamte Such Teil. Es gibt keinerlei Exception oder sonst nen Fehler, bis auf die Tatsache, das das Fenster nicht mehr reagiert....

Code:
JFrame Search = new JFrame( "Suchen und Ersetzen" ); 
        	Search.setSize( 350, 200 ); 
        	Search.setVisible( true ); 
        	Search.setLocation(350,250) ;
        	
        	JPanel SuEr = new JPanel();
        	Search.add(SuEr);
        	
        	JTextField SuchText = new JTextField(30);
        	SuEr.add (SuchText);
        	
        	JButton suchen = new JButton( "Suchen" ); 
            SuEr.add( suchen ); 
            JButton weiter = new JButton( "Weiter Suchen" ); 
            SuEr.add( weiter ); 
            
            JTextField ErsetzText = new JTextField(30);
        	SuEr.add (ErsetzText);
            
            JButton ersetzen = new JButton( "Ersetzen" ); 
            SuEr.add( ersetzen ); 
    		
             	
            String text = Editor.getTextFromtArea();
            int index;
            int start = 0;
            String search = SuchText.getText();
            int len = search.length();
            String replace = ErsetzText.getText();
     
            StringBuffer buff = new StringBuffer(text.length()+30);
        
        
	        while ( (index = text.indexOf(search, start)) >=0 ) {
	            if (index > start) {
	                // Kopiere, was zwischen der letzten Fundstelle und der aktuellen liegt.
	                buff.append(text.substring(start, index));    
	            }
	            start = index + len;
	            // Ersetze die aktuelle Fundstelle durch den Ersatz.
	            buff.append(replace);
	        }
	        if (start < text.length()) {
	            // Kopiere, was auf die letzte Fundstelle noch folgt.
	            buff.append(text.substring(start, text.length()));
	        }
	        
	        System.out.println(text); // erst das Original
	        System.out.println(buff.toString()); // dann das veränderte
	        
	        Editor.appendText2(buff.toString());    
	        }
 

outbreaker

Bekanntes Mitglied
1.) JFrame search und nicht JFrame Search
2.) füge mal erst deine Buttons und co zum JFrame hinzu und mache dann das

Code:
Search.setSize( 350, 200 );
Search.setVisible( true );
Search.setLocation(350,250) ;

dann sind diese auch sichtbar

also Zeile 2-4 in Zeile 22 verschieben
 

Oger

Mitglied
Die Buttons und Co sind doch auf dem JPanel und das ist im JFrame, reicht das nicht oder steht ich grad aufm Schlauch ?
 

outbreaker

Bekanntes Mitglied
ja das reicht aber du zeigst das JFrame ja schon an bevor du deine Buttons usw hinzufügst somit werden die nicht angezeigt da ein repaint fehlt.

mache die Reihenfolge so:

Code:
JFrame Search = new JFrame( "Suchen und Ersetzen" );
		              
JPanel SuEr = new JPanel();
Search.add(SuEr);

JTextField SuchText = new JTextField(30);
SuEr.add (SuchText);
		              
JButton suchen = new JButton( "Suchen" );
SuEr.add( suchen );
JButton weiter = new JButton( "Weiter Suchen" );
SuEr.add( weiter );
		              
JTextField ErsetzText = new JTextField(30);
SuEr.add (ErsetzText);
	              
JButton ersetzen = new JButton( "Ersetzen" );
SuEr.add( ersetzen );

Search.setSize( 350, 200 );
Search.setVisible( true );
Search.setLocation(350,250) ;
 

Oger

Mitglied
Ok, danke, aber das löst mein Problem nicht. Die beiden Fenster hängen sich immer noch auf.
 

outbreaker

Bekanntes Mitglied
deine while-Schleife in Zeile 34 ist eine Endlosschleife
weil index immer 0 ist
sobald ud die Anwendung startest suchst du nach dem index
beim starten der Anwendung ist aber der Inhalt von search = "" somit bleibt er immer in der schleife

du solltest das suchen erst starten wenn der Anwender auf einen Button klickt und nicht schon vorher
 

outbreaker

Bekanntes Mitglied
Also wenn du in der while abfrage das = wegnimmst startet es würde ich sagen

Code:
while ( (index = text.indexOf(search, start)) >0 ) {
 

Oger

Mitglied
Öhm, das geht nicht. Was soll ich denn mit dem index dann tun ?

Außerdem kommt der Fehler schon bei der Darstellung des Fensters, da es sich gar nicht erst aufbaut. Wenn ich nur ein JTextField habe, dauert es ein paar Sekunden und dann geht es. Nur wenn ich das zweite mit einbeziehe, dann scheint er sich tot zu laden....
 

Oger

Mitglied
outbreaker hat gesagt.:
deine while-Schleife in Zeile 34 ist eine Endlosschleife
weil index immer 0 ist
sobald ud die Anwendung startest suchst du nach dem index
beim starten der Anwendung ist aber der Inhalt von search = "" somit bleibt er immer in der schleife

du solltest das suchen erst starten wenn der Anwender auf einen Button klickt und nicht schon vorher


Ohne gui läuft das Ding aber und funktioniert tadellos... Das mit dem Button draufklicken habe ich wohl vergessen..
 

outbreaker

Bekanntes Mitglied
du hast diese Zeile

Code:
int len = search.length();

und in deiner Schleife machst du das:

Code:
start = index + len;

wenn nun search.length() == 0 ist dann bleibt dein startwert immer 0
 

Oger

Mitglied
Hey, ich bin ein Noob und habe keine ahnung... aber ohne die Gui Kacke läuft dieser Teil wunderbar und ich kann ein vorgegbenes Wort suchen und auch ersetzen....


Das ist komisch:
Wenn ich
Code:
String search = "Fester String";

mach statt

Code:
String search = SuchText.getText();;

dann lädt er die Gui ohne Probleme
 

outbreaker

Bekanntes Mitglied
ja aber wenn du
Code:
String search = SuchText.getText();;
machst beim start dann ist der Inhalt von search leer
und dann suchst du nach dem vorkommen von keinem Zeichen in deiner while schleife

und wenn du schon von Anfang an einen String reinschreibst dann klappt es weill der ja nicht leer ist

mache deine while schleife erst nach drücken eines buttons und wenn SuchText.getText().length > 0 ist

um dem Button eine funktion zu geben braucht du einen ActionListener

den bekommst du z.b. so in deine Klasse:

Code:
public class Klasse implements ActionListener{
...
}

dann hast du eine MEthode actionPerformed() und in der sagst du dann was der Button machen soll
und das ganze muss dann noch an den Button gehängt werden mit
Code:
Button myB = new Button();
myB.addActionListener(this);

oder du machts es zum Testen erstmal so:

Code:
while ( (index = text.indexOf(search, start)) >=0 && SuchText.getText().length > 0){
 

Oger

Mitglied
Erstmal vielen Dank, es klappt nun....

Ich habe aber nu ein anderes Problem.
Wenn ich die Suchfunktion anklicke, dann wird ja das JFrame mit Inhalt geladen. Wenn ich aber während der Laufzeit ein weiteres Mal die Suchfunktion aktiviere, dann ist alles doppelt da. Kann man das JFrame am Ende irgendiwe zurück setzen oder löschen ?
 

Tobias

Top Contributor
Zunächst einmal solltest du statt JFrame einen JDialog benutzen - der funktioniert ähnlich wie ein JFrame, ist aber extra dafür gedacht, als "Unterfenster" zu einem JFrame zu agieren. Und ansonsten: Der Suchdialog enthält bei nochmaligen Aufruf doppelt so viele Element wie gewollt, hab ich das richtig verstanden? Dann benutzt du vermutlich irgendwo das selbe Such-JFrame wieder und wieder, addest aber jedesmal die GUI-Elemente erneut - Suchdialog als eigene Klasse schreiben, Objekt nicht wiederverwenden.

mpG
Tobias
 

Oger

Mitglied
Ich habe eine Klasse mit dem Namen SuchGui die durch einen klick im Menü aufgerufen wird.... und in der Klasse wird das komplette Suchfenster aufgebaut.... Wie soll ich es statt dessen machen ?
 

Oger

Mitglied
Nicht wundern, 2 Buttons funktionieren im Moment noch nicht....


Code:
public class SuchGui extends JPanel implements ActionListener{
	
	private Editor test;
	
	JFrame SuchFenster = new JFrame( "Suchen und Ersetzen" );
	JPanel SuchPanel = new JPanel();	
	
	
	
	
	
	
	 
	
	public  SuchGui(Editor editor){
		 
		   test = editor;
		   
	   }
	
	public void actionPerformed(ActionEvent e){
		String cmd = e.getActionCommand() ;
		
		if (cmd.equals("suche") ) {
			
			SuchFenster.add(SuchPanel);
			final JTextField SuchText = new JTextField(30);
			SuchPanel.add(SuchText);
			JButton Suchen = new JButton( "Suchen" );
			SuchPanel.add( Suchen );
			JButton SuchenWeiter = new JButton( "Weiter Suchen" );
			SuchPanel.add( SuchenWeiter );
			
			final JTextField ErsetzText = new JTextField(30);
			SuchPanel.add(ErsetzText);
			JButton Ersetzen = new JButton( "Ersetzen" ); 
			SuchPanel.add(Ersetzen);
		   
			
			ActionListener SucheText = new ActionListener() { 
		    	public void actionPerformed( ActionEvent e ) { 
		    		System.exit( 0 ); 
		    	} 
		    };
		    Suchen.addActionListener( SucheText );

		    ActionListener SucheWeiterText = new ActionListener() { 
		    	public void actionPerformed( ActionEvent e ) { 
		    		System.exit( 0 ); 
		    	} 
		    };
		    SuchenWeiter.addActionListener( SucheWeiterText );
		    
		    
		    ActionListener ErsetzeText = new ActionListener() { 
		    	public void actionPerformed( ActionEvent e ) { 
		    		
		    		String text = Editor.getTextFromtArea();
			        int index;
			        int start = 0;
			        String search = SuchText.getText();
			        int len = search.length();
			        String replace = ErsetzText.getText();

			        StringBuffer buff = new StringBuffer(text.length()+30);
			            
			        while ( (index = text.indexOf(search, start)) >=0 ) {
			            if (index > start) {
			                // Kopiere, was zwischen der letzten Fundstelle und der aktuellen liegt.
			                buff.append(text.substring(start, index));    
			            }
			            start = index + len;
			            // Ersetze die aktuelle Fundstelle durch den Ersatz.
			            buff.append(replace);
			        }
			        if (start < text.length()) {
			            // Kopiere, was auf die letzte Fundstelle noch folgt.
			            buff.append(text.substring(start, text.length()));
			        }
			        
			        System.out.println(text); // erst das Original
			        System.out.println(buff.toString()); // dann das veränderte
			        
			        Editor.appendText2(buff.toString());    
			        }
		    };
		    Ersetzen.addActionListener( ErsetzeText ); 
		    
		    
		 
		    SuchFenster.setSize( 350, 200 );
		    SuchFenster.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			SuchFenster.setVisible( true );
			SuchFenster.setLocation(350,250) ;
			
			SuchPanel.setVisible(true);
			
		
			
		}
	}
		
		
	
	
}
 

Tobias

Top Contributor
Eieiei, da ist aber ganz schön was durcheinander gegangen ...

Mach folgendes:

Code:
public class SuchGUI extends JDialog implements ActionListener {

    private String suchString;

    public SuchGUI(SwingEditorInterface parent) {
         super(parent.getFrame(), true);  // getFrame() liefert das JFrame vom SwingEditor zurück
         // Gui zusammenbauen
         suchButton.addActionListener(this); // suchButton ist der Button, der die Suche startet
         setVisible(true);
    }

    public String getSuchString() {
        return suchString;
    }

    public void actionPerformed(ActionEvent e) {
         suchString = suchTextField.getText();
         setVisible(false);
         dispose();
    }

}

In der Klasse Globals eine Methode, die den Suchstring als Parameter annimmt und die eigentliche Suche ausführt. Im MenueListener dann sowas a la:

Code:
... if(e.getActionCommand().equals("Suchen")) {
    SuchGUI sGui = new SuchGUI(f); // f ist das SwingEditorInterface
    Glogabls.getGlobals().search(sGui.getSuchString());
}

SuchGUI macht also nichts anderes als den Aufbau der GUI, Globals macht die eigentliche Arbeit und MenueListener verkabelt das Ganze. Ich wünsche viel Erfolg. Wenn es nicht klappt: Morgen bin ich ja mit Leib und Seele wieder da ;).

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
Alan6 Java Editor BMI Rechner Java Basics - Anfänger-Themen 7
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
J "travelling salesman problem" mit Java Editor Java Basics - Anfänger-Themen 17
NightmareVirus Java-Editor (G. Röhner): Fehlende Dateinamen Java Basics - Anfänger-Themen 1
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
N Eclipse - Editor - zugeklappte Methoden speichern Java Basics - Anfänger-Themen 3
N JDK installieren Probleme mit dem Java Editor Java Basics - Anfänger-Themen 3
L Source Code in Editor kopieren Java Basics - Anfänger-Themen 5
H Interface Problem mit Java Editor Java Basics - Anfänger-Themen 15
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
K Java-Editor: "Starten" bringt Error Java Basics - Anfänger-Themen 15
P OOP Java-Editor OOP Fehlerlösung Java Basics - Anfänger-Themen 6
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
Q Classpath mit Text Editor progammieren (Classpath) Java Basics - Anfänger-Themen 5
D Erste Schritte Problem mit dem Java-Editor Eclipse [Frage] Java Basics - Anfänger-Themen 13
H Einfacher Editor, Einfache Handelsanweisungen Java Basics - Anfänger-Themen 2
T Problem mit java-editor + Scanner Java Basics - Anfänger-Themen 9
C Java Gui Editor Java Basics - Anfänger-Themen 10
K Fehlermeldung nach editor installation Java Basics - Anfänger-Themen 3
H Java-Editor Wahl Java Basics - Anfänger-Themen 15
K Java editor kompiliert aber startet nicht Java Basics - Anfänger-Themen 5
S Java-Editor für Mac? Java Basics - Anfänger-Themen 8
R Erste Schritte codecopieren von Editor nach Eclipse / JTextField Java Basics - Anfänger-Themen 4
J Java Editor Appletons - Errors Java Basics - Anfänger-Themen 13
D Eclipse und Visual Editor - erzeugen einer Tabelle Java Basics - Anfänger-Themen 8
B Reiter in einer GUI (Visual Editor) Java Basics - Anfänger-Themen 4
D OOP Suchfunktion Editor Java Basics - Anfänger-Themen 4
S Erste Schritte Probleme Editor (Windows) Java Basics - Anfänger-Themen 13
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
F Erster Tag mit Java Editor Java Basics - Anfänger-Themen 32
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
C Textdatei mit eigenem .jar Editor öffnen Java Basics - Anfänger-Themen 11
F html editor Java Basics - Anfänger-Themen 5
G Kann mit Java Editor keine Programme schreiben Java Basics - Anfänger-Themen 5
F Image Editor Java Basics - Anfänger-Themen 2
B OOP Objekt klonen (Grundzustand), um in Editor "Abbrechen" zu können Java Basics - Anfänger-Themen 4
H Java Editor richtig konfogurieren Java Basics - Anfänger-Themen 8
H warum speicher und läd mien editor nicht? Java Basics - Anfänger-Themen 24
J Java - Editor Java Basics - Anfänger-Themen 8
H Multiple JFrames im GUI Editor von NetBeans Java Basics - Anfänger-Themen 2
J Editor für grafische Oberfläche Java Basics - Anfänger-Themen 12
J Probleme mit Visual Editor Komponenten auf Panel legen Java Basics - Anfänger-Themen 4
B .txt Datei mit Editor öffnen Java Basics - Anfänger-Themen 8
K Ich möchte in einem Text Editor cut, copy ,paste einfügen! Java Basics - Anfänger-Themen 2
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
K Entwicklungsumgebung Eclipse und Visual Editor Plugin Java Basics - Anfänger-Themen 5
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4
G *.java Datei mit Editor starten und testen Java Basics - Anfänger-Themen 6
G Suche Guten Editor zum Loggen Java Basics - Anfänger-Themen 3
H Java Editor Java Basics - Anfänger-Themen 7
C problem miteinfachem editor Java Basics - Anfänger-Themen 8
K Grundlegendes Problem - Editor funktioniert nicht Java Basics - Anfänger-Themen 9
O Swing Editor - Menüeintrag deaktivieren Java Basics - Anfänger-Themen 13
C Java Editor Java Basics - Anfänger-Themen 7
C Java-Editor einrichten Java Basics - Anfänger-Themen 6
B problem mit editor Java Basics - Anfänger-Themen 3
C Editor basteln Java Basics - Anfänger-Themen 8
C Syntaxhighlighting OHNE Editor Java Basics - Anfänger-Themen 4
F Wie benutze ich mein java programm ohne editor? Java Basics - Anfänger-Themen 2
I Editor auswahl Java Basics - Anfänger-Themen 6
J Wie installiere ich die api index.html in meinen java editor Java Basics - Anfänger-Themen 4
zilti Graphischer Editor? Java Basics - Anfänger-Themen 9
S Dartscheibe mit Java editor von gerhard röhner Java Basics - Anfänger-Themen 2
F Editor programmieren - Problem mit Einfügen, Ausschneiden Java Basics - Anfänger-Themen 8
M Suche einen ganz einfachen Editor (syntax Highlighting+comp) Java Basics - Anfänger-Themen 7
D Editor automatisch starten ? Java Basics - Anfänger-Themen 4
C Clear im Grafik Editor Java Basics - Anfänger-Themen 16
A Line-Editor Java Basics - Anfänger-Themen 2
L Probleme bei Visual Editor Installation Java Basics - Anfänger-Themen 4
G Eclipse RC2 und Visual Editor Probleme Java Basics - Anfänger-Themen 3
E Ohne Editor Java- Programm starten Java Basics - Anfänger-Themen 4
M HTML Editor mit Java? Java Basics - Anfänger-Themen 6
G Problem mit einfachem TXT-Editor Java Basics - Anfänger-Themen 2
G Rich Text Editor - mit Java möglich? Java Basics - Anfänger-Themen 2
C Text in den Editor übernehmen Java Basics - Anfänger-Themen 5
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
CptK Achsenskalierung in Koordinatensystem hängt Programm auf Java Basics - Anfänger-Themen 5
D GUI hängt Java Basics - Anfänger-Themen 5
N httpclient - Verbindung hängt ? Java Basics - Anfänger-Themen 13
Fishmeaker Methoden mit Methoden aufrufen - Programm hängt sich auf Java Basics - Anfänger-Themen 5
Lord.Djerun (Netbeans) Bei TimeUnit.Seconds,Sleep() hängt sich das komplette Programm auf.. Java Basics - Anfänger-Themen 8
P Eingabeaufforderung hängt sich auf Java Basics - Anfänger-Themen 2
S Programm hängt sich auf Java Basics - Anfänger-Themen 2
D Programm hängt evtl. Deadlock? Java Basics - Anfänger-Themen 8
J JFRAME hängt sich auf Java Basics - Anfänger-Themen 12
O java.util.Scanner hängt sich auf Java Basics - Anfänger-Themen 5
R Netbeans hängt sich beim profilen auf Java Basics - Anfänger-Themen 4
P BlueJ hängt sich beim compilen auf Java Basics - Anfänger-Themen 9
F Primitiver Lucas-Lehmer-Test hängt sich auf Java Basics - Anfänger-Themen 7
S JDK hängt beim Ausführen von Dateien Java Basics - Anfänger-Themen 13
R JFileChooser hängt java Programm auf Java Basics - Anfänger-Themen 6
T BufferedReader oder Prozess, wer hängt sich auf? Java Basics - Anfänger-Themen 6
D Runtime Prozeß hängt sich auf. in der Kommandozeile gehts Java Basics - Anfänger-Themen 5
G GUI hängt sich auf! Java Basics - Anfänger-Themen 20
W sleep "hängt" bei vielen Threads Java Basics - Anfänger-Themen 2
G Compiler hängt schon wieder Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben