G
Guest
Gast
Hallo,
Wie könnte ich eine beliebige SWT-Komponente drucken? Mir wurde eine Lösung vorgeschlagen, bei der eine Komponente zuerst zu einem Image umgewandelt wird und dann ausgedruckt wird (code unten). Es funktioniert auch ganz gut, aber ich möchte nicht nur eine Bestimmte, sondern alle möglichen Komponenten ausdrucken können.
Die vorgeschlagene Lösung sieht folgendemaßen aus und can nur ein Table ausdrucken:
Viele Grüße
Taha
Wie könnte ich eine beliebige SWT-Komponente drucken? Mir wurde eine Lösung vorgeschlagen, bei der eine Komponente zuerst zu einem Image umgewandelt wird und dann ausgedruckt wird (code unten). Es funktioniert auch ganz gut, aber ich möchte nicht nur eine Bestimmte, sondern alle möglichen Komponenten ausdrucken können.
Die vorgeschlagene Lösung sieht folgendemaßen aus und can nur ein Table ausdrucken:
Code:
public class CaptureWidgetImage {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Widget");
shell.setBounds(10, 10, 200, 200);
final Table table = new Table(shell, SWT.MULTI);
table.setLinesVisible(true);
table.setBounds(10, 10, 100, 100);
for (int i = 0; i < 9; i++) {
new TableItem(table, SWT.NONE).setText("item" + i);
}
Button button = new Button(shell, SWT.PUSH);
button.setText("Capture");
button.setBounds(10, 140, 50, 20);
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
Point tableSize = table.getSize();
GC gc = new GC(table);
final Image image =
new Image(display, tableSize.x, tableSize.y);
gc.copyArea(image, 0, 0);
gc.dispose();
Shell popup = new Shell(shell);
popup.setText("Image");
popup.setBounds(50, 50, 200, 200);
Canvas canvas = new Canvas(popup, SWT.NONE);
canvas.setBounds(10, 10, 150, 150);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawImage(image, 0, 0);
}
});
popup.open();
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
Viele Grüße
Taha