Προς το περιεχόμενο

Text Editor σε Java


Merdock

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα.

 

Εδώ και κάτι μέρες προσπαθώ να φτιάξω ένα απλό text editor σε Java.Επειδή είναι η πρώτη φορά που χρησιμοποιώ Java έχω λιώσει στο ψάξιμο οπότε επειδή δεν αντέχω άλλο θέλω τη βοήθεια σας.

 

Λοιπόν έστω ότι έχω το τάδε κείμενο "Ωραία μέρα σήμερα συμφωνείς;

 

Θέλω να το αποθηκεύσω και όταν το ανοίξω να έχει κρατήσει τους bold/italic/underlined χαρακτήρες.Έχω καταφέρει το κομμάτι του save(όταν ανοίγω το αρχείο με Firefox κρατάει κανονικά τα bold κτλ) αλλά έχω πρόβλημα στο open.Μου τα βγάζει έτσι:

 

 

><html>
 <head>
   <style>
     <!--
       p.Bold {
         bold:bold;
       }
       p.Underline {
         underline:underline;
       }
       p.Italic {
         italic:italic;
       }
       p.default {
         size:4;
         bold:normal;
         italic:;
         family:Lucida Grande;
       }
     -->
   </style>
 </head>
 <body>
   <p class=default>
     <span style="font-size: 13pt; font-family: Lucida Grande">
       <b>Ωραία</b>
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
        μέρα 
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
       <u>σήμερα</u>
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
        
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
       <i>συμφωνείς</i>
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
       ;
     </span>
     <span style="font-size: 13pt; font-family: Lucida Grande">
       <b> </b>
     </span>
   </p>
 </body>
</html>

 

 

Ορίστε και το συγκεκριμένο κομμάτι του κώδικα.

 

 

>    class OpenListener implements ActionListener {
       
       public void actionPerformed(ActionEvent ae) {
           
             JFileChooser chooser = new JFileChooser();
               chooser.setMultiSelectionEnabled(false);

               int option = chooser.showSaveDialog(TextEditor.this);

               if (option == JFileChooser.APPROVE_OPTION) {
                StyledDocument doc = (StyledDocument)editArea.getDocument();

                   HTMLEditorKit kit = new HTMLEditorKit();

                   BufferedInputStream in;
               try {
                   in = new BufferedInputStream(new FileInputStream(chooser.getSelectedFile().getAbsoluteFile()));
                   kit.read(in, doc, doc.getStartPosition().getOffset());  // Use TextComponent read
               } catch (IOException ioex) {
                   System.exit(1);
               }
catch (BadLocationException be){}
           }
       }
   }
   
   class SaveListener implements ActionListener {
       
       public void actionPerformed(ActionEvent e) {
         if (editArea.getText().length() > 0){

                   JFileChooser chooser = new JFileChooser();
                   chooser.setMultiSelectionEnabled(false);

                   int option = chooser.showSaveDialog(TextEditor.this);

                   if (option == JFileChooser.APPROVE_OPTION) {

                       StyledDocument doc = (StyledDocument)editArea.getDocument();

                       HTMLEditorKit kit = new HTMLEditorKit();

                       BufferedOutputStream out;

                       try {
                           out = new BufferedOutputStream(new FileOutputStream(chooser.getSelectedFile().getAbsoluteFile()));

                           kit.write(out, doc, doc.getStartPosition().getOffset(), doc.getLength());

                       } catch (FileNotFoundException ex) {

                       } catch (IOException ioe){

                       } catch (BadLocationException be){

                       }
                   }
               }
        
       }
   }

 

Δημοσ.

Γεια σου,

καταρχην αυτο που λες "απλος text editor" ειναι κανονικος html editor, που σημαινει πως αυτο που παραγεται στην ουσια ειναι ο κωδικας που βλεπεις. Οταν πας και το ανοιγεις με το προγραμμα σου, το διαβαζεις σαν απλο text και γιαυτο στα βγαζει ετσι. Χρειαζεται πρωτα να κανεις καποιο parsing του αρχειου σου πριν το παρουσιασεις (το HTMLEditorKit εχει αυτη τη δυνατοτητα). Δες αυτο το παραδειγμα (την μεθοδο doLoadCommand), πιστευω δεν θα δυσκολευτεις να το προσαρμοσεις στο δικο σου κωδικα.

 

 

.

Δημοσ.

Thanks θα το κοιτάξω σε λίγο.

 

Και κάτι άλλο.

 

Θέλω να στο status bar που έχω φτιάξει να ανανεώνει αυτόματα το Reserved Words Count,τις οποίες δεσμευμένες λέξεις της Java τις διαβάζει από άλλο αρχείο.Το χω κάνει αυτό αλλά η απορία είναι όταν το κάνω .jar πως θα το διαβάζει το αρχείο στο PC του καθηγητή αφού θα έχει άλλο path από αυτό που έχω ορίσει στο

>FileInputStream fstream = new FileInputStream("/Users/user/Documents/Text Editor/desm.txt");

 

Οκ άκυρο το από πάνω(που το βαλα σε quote) το βρήκα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...