gpt4 book ai didi

java - 如何将 Java 代码嵌入到 jython 脚本中。

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:45 25 4
gpt4 key购买 nike

我制作了这个 beanShell 脚本,通过按下按钮来获取递增的屏幕截图,现在我正在尝试弄清楚如何在 Jython 中使用 Java 来执行此操作以获取实际的屏幕截图(因为它是跨平台的)。

不过我做得不太好,想知道是否有人可以向我展示如何将 Java 部分插入到 Jython 部分中(我已经准备好 gui 和事件 - 见下文)?

这是 Java 部分...

Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
Rectangle rect = new Rectangle(0, 0, scr.width, scr.height);
BufferedImage image = robot.createScreenCapture(rect);
ImageIO.write(image, "jpeg", new File("Captured" + c + ".jpg"));

这是整个 beanShell 脚本

import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

int c = 0; // image counter

buttonHandler = new ActionListener() {
actionPerformed( this ) {

Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();

// Allocate a Robot instance, and do a screen capture
Robot robot = new Robot();
Rectangle rect = new Rectangle(0, 0, scr.width, scr.height);
BufferedImage image = robot.createScreenCapture(rect);

// Save the captured image to file with ImageIO (JDK 1.4)
ImageIO.write(image, "jpeg", new File("Captured" + c + ".jpg"));
c++;
}
};

button = new JButton("Click to save incrementing screenshots to this app's location");
button.addActionListener( buttonHandler );
// JLabel label1 = new JLabel("hello");
frame(button);

这是我迄今为止拥有的 Jython 脚本...

from javax.swing import JButton, JFrame
from java.awt import Toolkit
from java.awt.event import KeyEvent;
from java.awt.image import BufferedImage;
from javax.imageio import ImageIO;
from java.io import File, IOException

c = 0

frame = JFrame(
'App Title',
defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
size = (450, 60)
)


def change_text(event):
global c
...
// Java part
...
c = c + 1


button = JButton(
"Click to save incrementing screenshots to this app's location",
actionPerformed=change_text
)

frame.add(button)
frame.visible = True

谢谢:)

最佳答案

将 Java 代码片段包装在公共(public) Java 类中:

package com.mycompany;
public class ScreenshotEngine {
public void takeScreenshot(String filename) {
// Code that actually takes the screenshot and saves it to a file
}
}

记住编译它并使其在应用程序的类路径上可用。

然后,从 jython 脚本中,您可以像任何其他 Java 类一样使用它。

# Using the fully qualified name of the class
engine = com.mycompany.ScreenshotEngine()
engine.takeScreenshot('/tmp/sc1.png')

# You can also use import to shorten class names
from com.mycompany import ScreenshotEngine
engine = ScreenshotEngine()
engine.takeScreenshot('/tmp/sc2.png')

您知道如何在上面的代码片段中使用 JDK 中的 JButtonJFrame 吗?这是同样的事情。

关于java - 如何将 Java 代码嵌入到 jython 脚本中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com