package tt;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test extends Shell {
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
Display display = Display.getDefault();
Test shell = new Test(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the shell
* @param display
* @param style
*/
public Test(Display display, int style) {
super(display, style);
createContents();
}
/**
* Create contents of the window
*/
protected void createContents() {
setText("SWT Application");
setSize(500, 375);
final Browser browser = new Browser(this, SWT.NONE);
browser.setUrl("www.google.com.hk");
browser.setBounds(10, 10, 374, 216);
final Button button = new Button(this, SWT.NONE);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
test(Test.this,browser,0,0,400,300,"d:/test.jpg");
}
});
button.setText("button");
button.setBounds(33, 274, 48, 22);
//
}
protected void test(Shell shell,Browser browser,int xDifference,int yDifference,int imageWidth, int imageHeight,String imgUrl) {
GC gc = new GC(browser);
//设置默认的宽度
if(imageWidth<=0){
imageWidth=1050;
}
//设置默认的高度
if(imageWidth<=0){
imageHeight=450;
}
//始终最前 (50:x轴,50:主轴,1050:图像的x轴的长度,450:图像的y轴的长度)
OS.SetWindowPos(shell.handle , OS.HWND_TOPMOST, 50 , 50 ,imageWidth, imageHeight , SWT.NULL);
shell.setVisible(true);
shell.open();
shell.layout();
try {
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Point size = browser.getSize();
Image image = new Image(shell.getDisplay(), size.x-xDifference, size.y-yDifference);
gc.copyArea(image, 0, 0);
shell.setVisible(false);
// BufferedImage bufferedImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] {image.getImageData()};
imageLoader.save(imgUrl, SWT.IMAGE_JPEG);
gc.dispose();
image.dispose();
//display.dispose();
//System.out.println("captured");
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
}
分享到:
相关推荐
总之,DJNativeSwing-SWT是一个强大的工具,结合了SwT的性能优势和Java的跨平台能力,同时提供了将HTML页面转换为图片的功能,这对于需要处理网页内容的Java应用来说是一项宝贵的资源。正确理解和使用这个库,可以...
在SWT中,数据绑定是一种将业务对象(通常称为bean)的属性与UI控件的值进行关联的技术,使得UI的变化能够实时反映到数据模型中,反之亦然。这种双向绑定机制极大地简化了UI与数据模型之间的交互,提高了代码的...
标题中的“swt程序发布,jar转exe”指的是将基于Java SWT(Standard Widget Toolkit)编写的程序转换成可执行的Windows EXE文件。SWT是Java平台上的一个GUI库,它提供了与本机操作系统更紧密集成的用户界面,使得...
例如,它可以帮助开发者使用SWT的表格控件,同时保持Swing的事件处理和布局管理机制。 接下来是swt-win-x64.jar,这是一个针对Windows 64位操作系统的SWT库。SWT库是平台相关的,因为它直接与底层操作系统进行交互...
在描述中提到了"swt-4.3-win64.jar"是一个HTML网页生成图片的工具,这意味着它可以将HTML内容转换为图像。这种功能在多种场景下都非常实用,例如,当需要在没有网络环境下展示网页内容,或者在报告、演示文稿中嵌入...
为了将HTML网页转换为图片,开发者可能需要使用到如Robot类(Java AWT库的一部分)来截取屏幕上的特定区域,或者使用WebBrowser控件提供的API(如果有的话)来直接获取网页的图像数据。这个过程可能涉及到页面渲染、...
这通常通过Java的`java.awt.image.BufferedImage`类和`javax.imageio.ImageIO`类实现,读取图片文件并将其转换为可以在SWT控件中显示的格式。 2. 图片分割:为了创建拼图,原始图片需要被分割成若干个部分。这可以...
SWT控件** Swt API提供了多种控件,如按钮(Button)、文本框(Text)、列表(List)、组合框(Combo)、滚动条(ScrollBar)等,这些控件与各个操作系统平台的原生控件保持一致,提供更好的用户体验。例如,`...
9. **播放控制**:视频播放器通常有快进、快退、音量控制、全屏切换等功能,这些都是通过多媒体库和SWT控件的组合实现的。 10. **错误处理**:良好的播放器会处理各种可能出现的问题,如文件损坏、编码不支持、资源...
在描述中提到,现在可以通过特定的方法将SWT开发的程序应用于Web环境,这通常涉及到技术上的转换和适应。 将SWT程序移植到Web环境,意味着我们需要将桌面应用的特性转换为适合浏览器运行的代码。一种可能的方法是...
4. `swing2swt.jar`:这是一个将Java Swing组件转换为SWT组件的库,可能用于兼容已有的Swing代码或者提供一些额外的功能。 5. `.project`:这是Eclipse项目的配置文件,包含项目类型、构建设置和其他元数据。 6. `...
7. **代码生成与编辑**:SWT-Designer允许在设计视图和源代码视图之间切换,你可以看到所见即所得的设计如何转换为Java代码,也可以直接编辑代码来微调细节。 通过这个入门教程,初学者将能够快速上手SWT-Designer...
在SWT中,我们可以使用`Display`类来创建一个新的窗口,`Shell`类表示窗口本身,而`Composite`类用于组合和管理控件。为了实现截图,我们需要以下关键步骤: 1. **捕获屏幕**:SWT不直接提供屏幕捕获功能,但可以...
6. **学习使用**:SWT Designer提供了一系列的控件,如按钮、文本框、表格等,你可以通过拖放的方式将它们添加到设计视图中,并调整其属性。此外,SWT Designer还支持布局管理,例如网格布局、表格布局和填充布局等...
`ContentProvider`负责提供数据模型,而`LabelProvider`则负责将这些数据转换成可视化的表示。通过这两者,你可以实现动态加载和更新树结构,使得UI能够反映数据模型的变化。 在给定的项目中,我们可以期待看到如何...
- **创建地图视图**:利用SWT控件创建一个用于显示地图的Canvas,然后通过SuperMap Objects Java API加载地图数据并设置视图。 - **实现基本操作**:这包括但不限于缩放、平移、旋转地图,添加图层,查询地理信息,...
通常,我们会先将WebBrowser控件的绘制区域转换为Bitmap对象,然后保存为图片文件,如JPEG或PNG格式。 4. **HTML到图像转换**:另一种方法是使用服务端库(如Puppeteer for Node.js)或API,它们可以完整地渲染网页...
2. 自动代码生成:设计的界面会被自动转换为SWT和JFace代码,减少了手动编码的工作量。 3. 支持多种布局:包括网格布局、表格布局、填充布局等多种布局管理器,满足不同界面需求。 4. 实时预览:在设计过程中,可以...
5. `org.eclipse.jface_3.11.0.v20150602-1400.jar`:Eclipse JFace是基于SWT的高级用户界面组件库,提供了一些抽象层,简化了对SWT控件的使用,如对话框、表视图等。 6. `org.eclipse.jface.text_3.10.0.v20150603...
SWT 提供了一系列的控件,如按钮、文本框、列表、树等,这些控件直接映射到操作系统提供的原生控件,因此在不同平台上表现一致,具有高性能和良好的用户体验。 JFace,则是建立在 SWT 之上的更高层次的抽象,它简化...