|
Processing...
Description & Source Code
The image component can either display an image file given its path or an image rendered dynamically using Java's graphical APIs. dynamic_image.zul
<window border="normal" width="500px" apply="demo.multimedia.DynamicImageComposer"> <hlayout> <vlayout> <button id="switchImageBtn" label="Switch Image" /> <image id="image" src="/widgets/multimedia/dynamic_image/img/image1.png" /> </vlayout> <vlayout> <button id="renderImageBtn" label="Render Image" /> <image id="img" /> </vlayout> </hlayout> </window> DynamicImageComposer.java
package demo.multimedia;
import org.zkoss.image.AImage;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Desktop;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Image;
import java.awt.*;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class DynamicImageComposer extends SelectorComposer<Component> {
@Wire
private Image image;
@Wire
private Image img;
private boolean odd = false;
private boolean odd1 = false;
@Listen("onClick = #switchImageBtn")
public void switchImage(Event event) throws IOException {
Desktop desktop = event.getTarget().getDesktop();
image.setContent(new AImage("t",
desktop.getWebApp().getResourceAsStream((odd = !odd) ?
"/widgets/multimedia/dynamic_image/img/image2.png" :
"/widgets/multimedia/dynamic_image/img/image1.png")));
}
@Listen("onClick = #renderImageBtn")
public void update() {
BufferedImage bufferimg = newimg((odd1 = !odd1));
img.setContent(bufferimg);
}
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
BufferedImage bufferimg = newimg(false);
img.setContent(bufferimg);
}
private BufferedImage newimg(boolean update) {
BufferedImage bi = new BufferedImage(150, 150, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bi.createGraphics();
g2d.setStroke(new BasicStroke(5));
Line2D line = update ? new Line2D.Double(10, 10, 130, 130) : new Line2D.Double(10, 130, 130, 10);
Rectangle2D retangle = new Rectangle2D.Double(25, 25, 85, 85);
g2d.setColor(update ? Color.cyan : Color.RED);
g2d.draw(line);
g2d.setColor(update ? Color.yellow : Color.pink);
g2d.draw(retangle);
return bi;
}
}
Copyright © 2005-2026 Potix Corporation All rights reserved.
|
|
Processing... |