Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java代码转换为Jython代码_Java_Python 2.7_Jython 2.7 - Fatal编程技术网

将Java代码转换为Jython代码

将Java代码转换为Jython代码,java,python-2.7,jython-2.7,Java,Python 2.7,Jython 2.7,下面的代码是用Java编写的。它已被缩短,以简化回答问题所需的时间。完整的代码将截图复制到剪贴板。(来源:) 我试图在Jython2.7程序中使用它。由于涉及到所有的私有类,我对如何修改这段代码感到困惑 public class ClipboardImage implements ClipboardOwner { public ClipboardImage() { try { Robot robot = new Robot(); Dimen

下面的代码是用Java编写的。它已被缩短,以简化回答问题所需的时间。完整的代码将截图复制到剪贴板。(来源:)

我试图在Jython2.7程序中使用它。由于涉及到所有的私有类,我对如何修改这段代码感到困惑

 public class ClipboardImage implements ClipboardOwner {
     public ClipboardImage() {
      try {
        Robot robot = new Robot();
        Dimension screenSize  = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle screen = new Rectangle( screenSize );
        BufferedImage i = robot.createScreenCapture( screen );
        TransferableImage trans = new TransferableImage( i );
        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        c.setContents( trans, this );
    }
    catch ( AWTException x ) {
        x.printStackTrace();
        System.exit( 1 );
    }
 }

    public static void main( String[] arg ) {
         ClipboardImage ci = new ClipboardImage();
    }

     public void lostOwnership( Clipboard clip, Transferable trans ) {
         System.out.println( "Lost Clipboard Ownership" );
     }

     private class TransferableImage implements Transferable {

         Image i;

         public TransferableImage( Image i ) {
             this.i = i;
         }

         public Object getTransferData( DataFlavor flavor ) 
         throws UnsupportedFlavorException, IOException {
             if ( flavor.equals( DataFlavor.imageFlavor ) && i != null ) {
                 return i;
             }
             else {
                 throw new UnsupportedFlavorException( flavor );
             }
         }

         public DataFlavor[] getTransferDataFlavors() {
             DataFlavor[] flavors = new DataFlavor[ 1 ];
             flavors[ 0 ] = DataFlavor.imageFlavor;
             return flavors;
         }

         public boolean isDataFlavorSupported( DataFlavor flavor ) {
             DataFlavor[] flavors = getTransferDataFlavors();
             for ( int i = 0; i < flavors.length; i++ ) {
                 if ( flavor.equals( flavors[ i ] ) ) {
                     return true;
                 }
             }

             return false;
         }
     }
 }
但是,我得到一个类型错误:

getTransferDataFlavors():无法将自身参数强制为java.awt.datatransfer.Transferable


我正在努力将
dataFlavor.imageFlavor
分配给我的图像,然后使其可转移,以便将其设置为剪贴板内容。

这不是翻译服务。你自己试试,最后你会学到更多。好吧,有了你的改变,我投票重新开放。只是出于好奇,为什么我的答案会被否决?
class TransferableImage(Transferable) :

     def __init__(self, image) :
             if not isinstance(image, Image) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.Image")
             self.image = image

     def getTransferData(self, flavor) :
             if not isinstance(flavor, DataFlavor) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.datatransfer.DataFlavor")
             if not flavor.equals(DataFlavor.imageFlavor) : 
                      raise UnsupportedFlavorException(flavor)
             return self.image

     def getTransferDataFlavors(self) :
             return [DataFlavor.imageFlavor];

     def isDataFlavorSupported(self, flavor) :
             if not isinstance(flavor, DataFlavor) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.datatransfer.DataFlavor")
             return flavor in getTransferFlavors()

class ClipboardImage(ClipboardOwner) :

     def __init__(self) :
             robot = Robot()
             toolkit = Toolkit.getDefaultToolkit()
             screenSize = toolkit.getScreenSize()
             screen = Rectangle(screenSize)
             image = robot.createScreenCapture(screen)
             trans = TransferableImage(image)
             clipboard = toolkit.getSystemClipboard()
             clipboard.setContents(trans, self)

     def lostOwnership(self, clip, trans) :
             print("Lost Clipboard Ownership")


ci = ClipboardImage()
class TransferableImage(Transferable) :

     def __init__(self, image) :
             if not isinstance(image, Image) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.Image")
             self.image = image

     def getTransferData(self, flavor) :
             if not isinstance(flavor, DataFlavor) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.datatransfer.DataFlavor")
             if not flavor.equals(DataFlavor.imageFlavor) : 
                      raise UnsupportedFlavorException(flavor)
             return self.image

     def getTransferDataFlavors(self) :
             return [DataFlavor.imageFlavor];

     def isDataFlavorSupported(self, flavor) :
             if not isinstance(flavor, DataFlavor) :
                      raise IllegalArgumentException("Parameter must be of type java.awt.datatransfer.DataFlavor")
             return flavor in getTransferFlavors()

class ClipboardImage(ClipboardOwner) :

     def __init__(self) :
             robot = Robot()
             toolkit = Toolkit.getDefaultToolkit()
             screenSize = toolkit.getScreenSize()
             screen = Rectangle(screenSize)
             image = robot.createScreenCapture(screen)
             trans = TransferableImage(image)
             clipboard = toolkit.getSystemClipboard()
             clipboard.setContents(trans, self)

     def lostOwnership(self, clip, trans) :
             print("Lost Clipboard Ownership")


ci = ClipboardImage()