gpt4 book ai didi

java - 使用 SWT 浏览器小部件打印

转载 作者:行者123 更新时间:2023-11-30 07:18:44 37 4
gpt4 key购买 nike

我想打印 SWT 浏览器小部件的内容。但它只打印浏览器的可见部分,而不是它的全部内容。

请帮忙。

最佳答案

我已经将 SWT 浏览器片段修改为选定的代码,它对我来说就像一个魅力......

import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.browser.*;

public class BrowserPrintTest {
public static void main(String [] args) {
Display display = new Display();
final Shell shell = new Shell(display);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
shell.setLayout(gridLayout);
ToolBar toolbar = new ToolBar(shell, SWT.NONE);
ToolItem itemPrint = new ToolItem(toolbar, SWT.PUSH);
itemPrint.setText("Print");

GridData data = new GridData();
data.horizontalSpan = 3;
toolbar.setLayoutData(data);

Label labelAddress = new Label(shell, SWT.NONE);
labelAddress.setText("Address");

final Text location = new Text(shell, SWT.BORDER);
data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.horizontalSpan = 2;
data.grabExcessHorizontalSpace = true;
location.setLayoutData(data);

final Browser browser;
try {
browser = new Browser(shell, SWT.NONE);
} catch (SWTError e) {
System.out.println("Could not instantiate Browser: " + e.getMessage());
display.dispose();
return;
}
data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.FILL;
data.horizontalSpan = 3;
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
browser.setLayoutData(data);

final Label status = new Label(shell, SWT.NONE);
data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 2;
status.setLayoutData(data);

final ProgressBar progressBar = new ProgressBar(shell, SWT.NONE);
data = new GridData();
data.horizontalAlignment = GridData.END;
progressBar.setLayoutData(data);

/* event handling */
Listener listener = new Listener() {
public void handleEvent(Event event) {
ToolItem item = (ToolItem)event.widget;
String string = item.getText();
if (string.equals("Print")) browser.execute("javascript:window.print();");
}
};
browser.addProgressListener(new ProgressListener() {
public void changed(ProgressEvent event) {
if (event.total == 0) return;
int ratio = event.current * 100 / event.total;
progressBar.setSelection(ratio);
}
public void completed(ProgressEvent event) {
progressBar.setSelection(0);
}
});
browser.addStatusTextListener(new StatusTextListener() {
public void changed(StatusTextEvent event) {
status.setText(event.text);
}
});
browser.addLocationListener(new LocationListener() {
public void changed(LocationEvent event) {
if (event.top) location.setText(event.location);
}
public void changing(LocationEvent event) {
}
});
itemPrint.addListener(SWT.Selection, listener);
location.addListener(SWT.DefaultSelection, new Listener() {
public void handleEvent(Event e) {
browser.setUrl(location.getText());
}
});

shell.open();
browser.setUrl("http://eclipse.org");

while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

您的浏览器大小合适吗?如果你没有看到长页面的滚动条,你的浏览器组件区域被修剪,然后你可能会在打印后只获得可见区域..

关于java - 使用 SWT 浏览器小部件打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156231/

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