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

πρόβλημα στο cut του κειμένου JAVA!


trilos021

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

Δημοσ.

Καλησπέρα.Έχω φτιάξει ένα JTextArea (το οποίο το ονομαζω keimenografos) και ένα κουμπί το οποίο θέλω να κάνει cut το κείμενο που θα επιλέγεται απο το textarea.έχω φτιάξει αυτό

 

>private void cutActionPerformed(java.awt.event.ActionEvent evt) {                                   
     //cut command



        String selection=keimenografos.getSelectedText();

        if(selection==null){
           return;
        }
                      
                           StringSelection clipString=new StringSelection(selection);
                           clipboard.setContents((Transferable)clipString,(ClipboardOwner)clipString);
                           keimenografos.replaceSelection("");
 // TODO add your handling code here:
   }     

 

στο IDE που χρησιμοποιώ (netbeans) δε μου δίχνει κάποιο σφάλμα και έτσι τρέχω κανονικά το πρόγραμμα.Το πρόβλημα δημιουργείται όταν κάνω κλικ στο κουμπί cut.Το error που μου βγάζει είναι αυτό

 

>Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: texteditor.resources.StringSelection cannot be cast to java.awt.datatransfer.Transferable

 

επίσης οι βιβλιοθήκες που έχω φορτώσει ΓΙΑ ΟΛΟ το πρόγραμμα είναι

 

>import java.io.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.JFileChooser;
import java.awt.datatransfer.*;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.ClipboardOwner;

 

αλλα και στο πρόγραμμα (texteditor) έχω προσθέσει αυτό

 

>public class texteditor extends javax.swing.JFrame  {

   private Clipboard clipboard = getToolkit().getSystemClipboard(); 

 

 

καμιά ιδέα για το τι μπορεί να φταίει?

Δημοσ.

κάνε τις παρακάτω διορθώσεις

 

αρχείο StringSelection.java

===============================

>

package texteditor.resources;

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

class StringSelection implements Transferable,ClipboardOwner {
static public DataFlavor stringFlavor;
private DataFlavor [] supportedFlavors = {stringFlavor};
private String selection;
   public StringSelection(String sel) {
       this.selection=sel;
       	   try {
    stringFlavor = new DataFlavor (Class.forName ("java.lang.String"), "String");
    }
   catch (ClassNotFoundException e) {
    System.out.println("error="+e);
   }

   }

   public DataFlavor[] getTransferDataFlavors() {
       return (supportedFlavors);

   }

   public boolean isDataFlavorSupported(DataFlavor flavor) {
       return (flavor.equals (stringFlavor));

   }

   public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
           if (flavor.equals (stringFlavor))
               return (selection);
   else
               throw new UnsupportedFlavorException (stringFlavor);
   }

   public void lostOwnership(Clipboard clipboard, Transferable contents) {
       System.out.println ("Lost ownership");
   }

}

 

 

αρχείο texteditor.java

=========================

a) στην συνάρτηση cutActionPerformed

>
........
  StringSelection clipString=new StringSelection(selection);
  clipboard.setContents(clipString,this);
  keimenografos.replaceSelection("");
.........

 

β)

>public class texteditor extends javax.swing.JFrame implements ClipboardOwner{

Δημοσ.

να φανταστώ τώρα μπορώ να χρησιμοποιήσω και τις συναρτήσεις copy & paste χώρίς κάποια αλλαγή στο StringSelection.java?

υ.γ χίλια ευχαριστώ

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

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

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