Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
radio selectedItem
1hawk172.69.33.1973tbdsq6Dec 20, 2024 12:30:58 PMlinkComboBox - Selection with Checkboxes
4guest162.158.111.151top66mDec 19, 2024 9:10:23 AMlinkComboBox - Selection with Checkboxes
3guest162.158.111.151top66mDec 19, 2024 9:10:17 AMlinkComboBox - Selection with Checkboxes
2guest162.158.111.152top66mDec 19, 2024 9:10:05 AMlinkComboBox - Selection with Checkboxes
1guest162.158.111.152top66mDec 19, 2024 9:10:02 AMlinkcombobox fix width
1JamesChu172.70.210.571l6u2u6Dec 19, 2024 8:23:28 AMlinkHorizontal scroll bar in Grid table
278guest172.64.238.15230n3ae0Dec 18, 2024 10:38:23 AMlinkshow tooltips
1guest172.70.206.244l3k1pDec 18, 2024 9:35:36 AMlinkshow tooltips
2guest172.70.206.2410uuq7Dec 18, 2024 9:35:31 AMlinkshow tooltips
1guest172.70.206.2410uuq7Dec 18, 2024 9:35:27 AMlinkiBilhestes
205guest172.68.40.138ssdm0jOct 11, 2024 7:45:09 AMlinkresources
index.zulzul<zk>
<style>
.banner {
background-color: #cc9966;
color: white;
padding: 5px 10px;
}
.menu-item {
margin: 10px 0;
}
.movie-type {
text-align: center;
margin: 20px;
}
.movie-type vbox {
margin: 10px;
position: relative;
}
.movie-type image {
width: 100px;
height: 150px;
border-radius: 10px;
transition: transform 0.3s, box-shadow 0.3s;
}
.movie-type image:hover {
transform: scale(1.05);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}
.movie-info {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
color: white;
text-align: center;
padding: 10px;
border-radius: 10px;
}
.movie-type vbox:hover .movie-info {
display: block;
}
.footer {
background-color: #444;
color: white;
padding: 10px;
text-align: center;
}
.search-bar {
margin: 20px;
text-align: center;
}
.search-bar .z-textbox {
width: 70%;
padding: 10px;
font-size: 16px;
}
.search-bar .z-button {
padding: 10px 20px;
font-size: 16px;
margin-left: 10px;
}
</style>
<borderlayout>
<north height="100px" sclass="banner">
<div>
<hbox align="center">
<div>
<label style="font-size: 50px">iBilhetes</label>
</div>
</hbox>
</div>
</north>
<west width="260px" minsize="300" splittable="true" collapsible="true">
<grid>
<columns>
<column width="100px"></column>
<column></column>
</columns>
<rows>
<row class="menu-item">
<a href="venda.zul" height="32px">Venda de Bilhetes</a>
</row>
<row class="menu-item">
<a href="consulta.zul" height="32px">Consultar Bilhetes</a>
</row>
<row class="menu-item">
<a href="relatorios.zul" height="32px">Consultar Relatórios</a>
</row>
</rows>
</grid>
</west>
<center>
<vbox>
<!-- Conteúdo principal -->
<div class="search-bar">
<textbox placeholder="Pesquisar filmes..."/>
<button label="Pesquisar"/>
</div>
<div class="movie-type">
<label style="font-size: 24px; font-weight: bold;">Tipos de Filmes</label>
<hbox>
<vbox>
<image src="https://www.jornalismo.ufv.br/cinecom/wp-content/uploads/2020/05/TOP-5-filmes-de-a%C3%A7%C3%A3o-2.jpg" width="250px" height="250px"/>
<label>Ação</label>
<div class="movie-info">
<label>Sinopse: Filme de ação emocionante.</label>
<label>Avaliação: ★★★★☆</label>
<button label="Comprar Ingresso"/>
</div>
</vbox>
<vbox>
<image src="https://www.jornalismo.ufv.br/cinecom/wp-content/uploads/2020/05/TOP-5-filmes-de-a%C3%A7%C3%A3o-2.jpg" width="250px" height="250px"/>
<label>Comédia</label>
<div class="movie-info">
<label>Sinopse: Filme de comédia hilário.</label>
<label>Avaliação: ★★★★☆</label>
<button label="Comprar Ingresso"/>
</div>
</vbox>
<vbox>
<image src="https://www.jornalismo.ufv.br/cinecom/wp-content/uploads/2020/05/TOP-5-filmes-de-a%C3%A7%C3%A3o-2.jpg" width="250px" height="250px"/>
<label>Drama</label>
<div class="movie-info">
<label>Sinopse: Filme de drama comovente.</label>
<label>Avaliação: ★★★★☆</label>
<button label="Comprar Ingresso"/>
</div>
</vbox>
</hbox>
</div>
</vbox>
</center>
<south height="100px" hflex="1">
<div style="text-align: center;">
<vbox style="text-align: center;">
iBilhete ${desktop.webApp.version}
<a href="http://codelaice.wordpress.com">http://codelaice.wordpress.com</a>
</vbox>
</div>
</south>
</borderlayout>
</zk>
TestComposer.javajavaimport org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
public class TestComposer extends GenericForwardComposer{
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
}
BilheteController.javajava
import org.zkoss.zk.ui.Component;
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.zk.ui.util.Clients;
import org.zkoss.zul.*;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
public class BilheteController extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
private static List<Bilhete> bilhetes = new ArrayList<>();
@Wire
private Textbox tituloBox, descricaoBox, localBox;
@Wire
private Datebox dataBox;
@Wire
private Intbox quantBox;
@Wire
private Decimalbox precoBox;
@Wire
private Grid consultaGrid, relatorioGrid;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
// Inicialização adicional, se necessário
}
@Listen("onClick = #criarBtn")
public void criarBilhete() {
Bilhete bilhete = new Bilhete();
bilhete.setTitulo(tituloBox.getValue());
bilhete.setDescricao(descricaoBox.getValue());
bilhete.setData(new Date(dataBox.getValue().getTime()));
bilhete.setLocal(localBox.getValue());
bilhete.setQuantidade(quantBox.getValue());
bilhete.setPreco(precoBox.getValue().doubleValue()); // Converte BigDecimal para double
bilhetes.add(bilhete);
Messagebox.show("Bilhete criado com sucesso!\n" + bilhete.toString(), "Informação", Messagebox.OK, Messagebox.INFORMATION);
atualizarGrids();
Clients.evalJavaScript("window.location.href='consulta.zul';");
}
private void atualizarGrids() {
System.out.println("Atualizando grids...");
if (consultaGrid != null) {
consultaGrid.getRows().getChildren().clear();
for (Bilhete bilhete : bilhetes) {
Row row = new Row();
row.appendChild(new Label(bilhete.getTitulo()));
row.appendChild(new Label(bilhete.getDescricao()));
row.appendChild(new Label(bilhete.getData().toString()));
row.appendChild(new Label(bilhete.getLocal()));
row.appendChild(new Label(String.valueOf(bilhete.getQuantidade())));
row.appendChild(new Label(String.valueOf(bilhete.getPreco())));
consultaGrid.getRows().appendChild(row);
}
} else {
System.out.println("consultaGrid é nulo");
}
if (relatorioGrid != null) {
relatorioGrid.getRows().getChildren().clear();
for (Bilhete bilhete : bilhetes) {
Row row = new Row();
row.appendChild(new Label(bilhete.getTitulo()));
row.appendChild(new Label(bilhete.getDescricao()));
row.appendChild(new Label(bilhete.getData().toString()));
row.appendChild(new Label(bilhete.getLocal()));
row.appendChild(new Label(String.valueOf(bilhete.getQuantidade())));
row.appendChild(new Label(String.valueOf(bilhete.getPreco())));
relatorioGrid.getRows().appendChild(row);
}
} else {
System.out.println("relatorioGrid é nulo");
}
}
public static class Bilhete {
private String titulo;
private String descricao;
private Date data;
private String local;
private int quantidade;
private double preco;
// Getters e Setters
public String getTitulo() { return titulo; }
public void setTitulo(String titulo) { this.titulo = titulo; }
public String getDescricao() { return descricao; }
public void setDescricao(String descricao) { this.descricao = descricao; }
public Date getData() { return data; }
public void setData(Date data) { this.data = data; }
public String getLocal() { return local; }
public void setLocal(String local) { this.local = local; }
public int getQuantidade() { return quantidade; }
public void setQuantidade(int quantidade) { this.quantidade = quantidade; }
public double getPreco() { return preco; }
public void setPreco(double preco) { this.preco = preco; }
@Override
public String toString() {
return "Título: " + titulo + "\nDescrição: " + descricao + "\nData: " + data + "\nLocal: " + local + "\nQuantidade: " + quantidade + "\nPreço: " + preco;
}
}
}
venda.zulzul<zk >
<window title="Registrar novo bilhete" border="normal" width="400px" apply="pkg$.BilheteController">
<vbox>
<hbox>
<a href="index.zul">
<button label="Voltar"/>
</a>
<label value="Registrar novo bilhete" style="padding-left: 10px;"/>
</hbox>
<grid>
<columns>
<column label="Campo"/>
<column label="Valor"/>
</columns>
<rows>
<row>
<label value="Título"/>
<textbox id="tituloBox"/>
</row>
<row>
<label value="Descrição"/>
<textbox id="descricaoBox"/>
</row>
<row>
<label value="Data do Evento"/>
<datebox id="dataBox"/>
</row>
<row>
<label value="Local"/>
<textbox id="localBox"/>
</row>
<row>
<label value="Quantidade de Bilhete"/>
<intbox id="quantBox"/>
</row>
<row>
<label value="Preço"/>
<decimalbox id="precoBox"/>
</row>
</rows>
</grid>
<hbox>
<button label="Cancelar" onClick="self.parent.detach()"/>
<button id="criarBtn" label="Criar Bilhete"/>
</hbox>
</vbox>
</window>
</zk>
test.jpgunknownhttps://th.bing.com/th/id/OIP.7uKj7YOn2fPVb2PtNi8ZdQHaDg?rs=1&pid=ImgDetMaintest2.jpgunknownhttps://th.bing.com/th/id/OIP.ks63voSvhus4Kqt75suG4wHaEo?rs=1&pid=ImgDetMainconsulta.zulzul<zk xmlns:n="native">
<window title="Consulta de Bilhetes" border="normal" width="600px" apply="pkg$.BilheteController">
<vbox>
<a href="index.zul">
<button label="Voltar"/>
</a>
<label value="Consulta de Bilhetes" style="font-size: 20px; font-weight: bold;"/>
<grid id="consultaGrid">
<columns>
<column label="Título"/>
<column label="Descrição"/>
<column label="Data"/>
<column label="Local"/>
<column label="Quantidade"/>
<column label="Preço"/>
</columns>
<rows>
<!-- Os dados dos bilhetes serão preenchidos pelo controlador -->
</rows>
</grid>
</vbox>
</window>
</zk>
relatorios.zulzul<zk xmlns:n="native">
<window title="Relatório de Bilhetes" border="normal" width="600px" apply="pkg$.BilheteController">
<vbox>
<a href="index.zul">
<button label="Voltar"/>
</a>
<label value="Relatório de Bilhetes" style="font-size: 20px; font-weight: bold;"/>
<grid id="relatorioGrid">
<columns>
<column label="Título"/>
<column label="Descrição"/>
<column label="Data"/>
<column label="Local"/>
<column label="Quantidade"/>
<column label="Preço"/>
</columns>
<rows>
<!-- Os dados dos bilhetes serão preenchidos pelo controlador -->
</rows>
</grid>
</vbox>
</window>
</zk>test3.jpgunknownhttps://th.bing.com/th/id/OIP.GbnYiM0mxXFXEd0CggSpXQAAAA?rs=1&pid=ImgDetMain