Estou tentando fazer tipo um velocímetro com os componentes rich:paint2d para desenhar e a4j:poll para dar um reRender no painel em que o velocímetro é desenhado. E aí está o problema, o a4j:poll nao redesenha a imagem, já tentei utilizar mediaoutput do ajax e tbm não funcionou. Comecei faz pouco tempo a trabalhar com essas tecnologias e então não sei se estou fazendo alguma coisa errada. Se alguém puder me ajudarrr…
Página:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<a4j:region>
<h:form>
<a4j:poll id="poll" interval="1000" enabled="true"
reRender="chartImage, poll" />
</h:form>
</a4j:region>
<h:form>
<a4j:outputPanel id="chartImage">
<rich:paint2D id="painter" width="300" height="160" cacheable="false"
data="#{paintData}" format="png" paint="#{paintBean.paint}" />
</a4j:outputPanel>
</h:form>
</ui:composition>
Bean:
public class PaintBean extends JPanel {
private int valorYInicial;
private int valorXInicial;
public int valorAtual = 25;
private int valorXImagem;
private int valorYImagem;
private int tamanhoPonteiro;
private int xcenter, ycenter;
int lastxs = 0, lastys = 0, lastxm = 0, lastym = 0, lastxh = 0, lastyh = 0;
private int i = valorAtual;
private int s = valorAtual;
private boolean flagI = false;
public static int valorPonteiro = 25;
public void paint(Graphics2D g, Object o) {
int xs, ys;
Graphics2D g2d = (Graphics2D) g;
Image im;
im = (new ImageIcon(getClass().getResource("/imagens/correnteTotal1.jpg"))).getImage();
tamanhoPonteiro = 45;
xcenter = 11;
ycenter = 71;
valorXImagem = 85;
valorYImagem = 130;
valorXInicial = 0;
valorYInicial = 0;
xs = (int) (Math.cos(s * 3.14f / 30 - 3.14f / 2) * tamanhoPonteiro + xcenter);
ys = (int) (Math.sin(s * 3.14f / 30 - 3.14f / 2) * tamanhoPonteiro + ycenter);
g.setColor(Color.black);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.setBackground(Color.BLACK);
g2d.drawImage(im, valorXInicial, valorYInicial, valorXImagem, valorYImagem, this);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// draw 2D line using stroke
float dashes[] = {1}; // specify dash pattern
g2d.setStroke(new BasicStroke(1.3f, BasicStroke.JOIN_ROUND,
BasicStroke.JOIN_ROUND, 1, dashes, 0));
g2d.setColor(Color.WHITE);
g2d.drawLine(xcenter, ycenter, xs, ys);
lastxs = xs;
lastys = ys;
}
public void redesenhar (){
GenericDAO genericDAO = new GenericDAO();
List<Equipamento> result = genericDAO.findAllEquipamento();
for (Equipamento equipamento: result) {
valorAtual = equipamento.getTempo();
}
repaint();
}
}