将Java代码转换为Jython代码
下面的代码是用Java编写的。它已被缩短,以简化回答问题所需的时间。完整的代码将截图复制到剪贴板。(来源:) 我试图在Jython2.7程序中使用它。由于涉及到所有的私有类,我对如何修改这段代码感到困惑将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
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()