2012-03-28 5 views
0

Ich versuche, Text-Editor-Anwendung in Java/Swing schreiben. Ich habe den FileChooser funktioniert und ich kann den Inhalt der Datei auf der Konsole ausdrucken. Ich möchte die Datei in ein JEditorPane ladenJava Swing laden Datei in JEditorPane

Wenn ich setText() aufrufen, aktualisiert es den Wert des Textes (ich kann das Ergebnis von getText drucken, aber das tatsächliche EditorPane ist nicht erfrischend). Ich habe versucht, repaint/revalidate auf dem JEditorPane, dem einkapselnden JScrollPane zu nennen, aber nichts wird den Text zu dem aktualisieren, was ich an setText gesandt habe.

Fehle ich etwas?

P.S. Der JEditorPane ist in ein JScrollPane eingebunden und ich habe eine Methode in meinem mainEditor, die den String an die setText-Methode des JEditorPane übergibt.

 if (r == JFileChooser.APPROVE_OPTION) 
     { 
      FileInputStream fis; 
      BufferedReader br; 
      try 
      { 
       fis = new FileInputStream( 
         chooser.getSelectedFile()) ; 
       br = new BufferedReader( 
         new InputStreamReader(fis)) ; 
       String read ; 
       StringBuffer text = new StringBuffer() ; 
       while((read = br.readLine()) != null) 
       { 
        text.append(read).append("\n") ; 
       } 
       Main.frame.mainEditor.setText(text.toString()) ; 
       Main.frame.mainEditor.revalidate(); 
      } 
      catch(IOException e1) 
      { 
       JOptionPane.showMessageDialog(this , 
        "Error in File Operation" , 
        "Error in File Operation" , 
        JOptionPane.INFORMATION_MESSAGE) ; 
      }    
     } 
+0

Wenn Sie den ganzen Code zu setzen, könnten wir in der Lage sein, Ihnen zu helfen. Ich sehe keine großen Probleme in Ihrem Code und das Einstellen des Textes sollte es tun. Haben Sie versucht, Ihren Anruf durch einen statischen String wie "Irgendein Text blah blah blah" zu ersetzen? –

Antwort

4

Formular der String in eine File Referenz, dass URL auf ein konvertieren dann setPage(URL) nennen.

Ein Beispiel finden Sie unter here.

3

Verwendung integrierte Methoden für Input für JTextComponents Familie

JTextCompoents#read();

JTextComponents#write();

+1

Als beiseite. Dies ist die bessere Antwort. Es bezieht sich nicht nur direkt auf Streams, die der Code bereits erwähnt, sondern deckt auch die Eingabe ** & Ausgabe ** ab (was natürlich für einen Editor erforderlich wäre). +1 (von vorher) –

+2

@Andrew Thompson nur Witz, gibt es zwei Vorteile :-) 1) erfinden Sie die Räder nicht neu, 2) alle CR, LR ... Separatoren Typen von akzeptieren ??? alle ??? Natives Betriebssystem, auf dem Java-Anwendungen ausgeführt werden können (nur installierte JRE) – mKorbel