[JavaFX] Problemas com binding  XML
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Autor Mensagem
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Olá:

Estou estudando JavaFX pelo Livro Plataforma Pro JavaFx (tradução brasileira). No momento estou no capítulo 7, sobre criação de telas mais complexas. Infelizmente estou com um problema referente a binding referente a este exemplo. A seguir segue-se uma versão simplificada do script problemático:

Quando rodo aparece a seguinte exceção:

Já Procurei pelo Google a respeito dessa mensagem, mas não me ajudou muito .
No que se refere ao MasterTimer.timePulse, as sugestões que achei sugerem usar FX.deferAction. Entretanto admito que não entendi como poderia utilizar.
Já que se refere a AssignToBoundException a sugestão é usar bind inverse. Entretanto se eu fizer tileWidth: bind scene.width / 2 with inverse, acontece erro de compilação.
Portanto minha dúvida é sobre o que estou fazendo de errado e como corrigí-lo.

Grato,

Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
Jesuino Master
GUJ Ranger
[Avatar]

Membro desde: 12/02/2009 08:40:06
Mensagens: 783
Offline

Oi,


Quando você faz um binding, não pode mais modificar o valor da variável, fica semelhante a um def...

O TileWidth e height é manipulado pela classe Tile, ela calcula o tamanho para o Tile de acordo com o Width total do Layout. Provalemente no JavaFX 1.2, versão sobre qual o livro é baseado, não há esse redimensionamento do Tile, daí o erro.

Sugestão:
- remova esse segundo bind
- Faça um override na variavel width do scene, quando ela for modificada acione um trigger que atualiza a variavel tilewidth do tile.

Se tiver dúvidas poste ae

[]'s



William Antônio Siqueira
Analista de Suporte
Blog e Twitter
Site Pessoal
Projetos? Idéias? Críticas? MP!
Não tome uma opinião como verdade absoluta!
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Jesuino Master wrote:
- remova esse segundo bind
- Faça um override na variavel width do scene, quando ela for modificada acione um trigger que atualiza a variavel tilewidth do tile.

Jesuíno:

Você então sugere criar uma subclasse de Scene para fazer um override de width? Poderia dar um exemplo?
Uma tentativa sem muito sucesso foi a seguinte:

Em width de Scene tentei fazer bind myWidth. Entretanto por Scene.width public-init, tive erro de compilação.

Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
Jesuino Master
GUJ Ranger
[Avatar]

Membro desde: 12/02/2009 08:40:06
Mensagens: 783
Offline

Então, segue abaixo um exemplo que acredito que não demonstra o Bind, mas mostra uma solução para quando temos problemas com campos que não podem ter referência fixa.



Escrevi um artigo sobre bind do JavaFX para o JavaFree:

http://javafree.uol.com.br/topic-874587-Bind-em-JavaFX.html?page=1

mas o livro realmente destrói e explica tudo que é possível sobre o binding, o mesmo acontece com a Reflection do JavaFX, ele explica melhor que qualquer tutorial na internerds

William Antônio Siqueira
Analista de Suporte
Blog e Twitter
Site Pessoal
Projetos? Idéias? Críticas? MP!
Não tome uma opinião como verdade absoluta!
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Jesuíno:

Funcionou! Obrigado!
Ah! Obrigado também pelo site http://www.javafx.com.br/

Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Enviei um email para o autor do código original, Stephen Chin. Eia a resposta dele:
Stephen Chin wrote:
Rafael,

Thanks for the note. JavaFX 1.3 introduced some incompatible changes.
Fortunately, there is an easy fix. Just add this line:
autoSizeTiles: false

That should fix the problem with the Tile exception you are seeing.

Cheers,
--Steve

O código corrigido ficou assim:

E finalmente funcionou como esperado.

This message was edited 1 time. Last update was at 24/08/2010 12:13:47


Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
Jesuino Master
GUJ Ranger
[Avatar]

Membro desde: 12/02/2009 08:40:06
Mensagens: 783
Offline

Ha legal

recebeu uma resposta direto do Stephen Chin hein

Assim o Tile não tenta ajustar seu Frame e você pode modificar a vontade o tamanho do mesmo.

Acho uma burrice do JavaFX isso, na verdade... Ele deveria saber que vocÊ fez bind na variável e automaticamente tirar o ajuste automático...

Valeu por compartilhar a solução!

William Antônio Siqueira
Analista de Suporte
Blog e Twitter
Site Pessoal
Projetos? Idéias? Críticas? MP!
Não tome uma opinião como verdade absoluta!
/DR\
Smalltalk

Membro desde: 19/11/2009 08:56:27
Mensagens: 4
Offline

Rafael Afonso wrote:Enviei um email para o autor do código original, Stephen Chin. Eia a resposta dele:
Stephen Chin wrote:
Rafael,

Thanks for the note. JavaFX 1.3 introduced some incompatible changes.
Fortunately, there is an easy fix. Just add this line:
autoSizeTiles: false

That should fix the problem with the Tile exception you are seeing.

Cheers,
--Steve

O código corrigido ficou assim:

E finalmente funcionou como esperado.


Não querendo reabrir o tópico, mas estou estudando esse mesmo livro, e acabei me deparando com diversos problemas, esse problema com a ligação dos tileWidth e titlHeight já estavam me tirando o sono.

Rafael Afonso você consegui executar todos os códigos do livro com perfeição?
tenho outras partes dos códigos de exemplos apresentando erro, e não consegui resolver.
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Olá:

Nem me lembro mais se consegui tudo o que estava no livro. Mas acho melhor você nem mais esquentar a cabeção com isso. Acho que é melhor você deixar a antiga versão do JavaFX e estudar a versão 2.0. Além disso o Livro já foi atualizado. Seria melhor estudar a partir dele.

Grato,

Rafael U. C. Afonso


/DR\ wrote:
Rafael Afonso wrote:Enviei um email para o autor do código original, Stephen Chin. Eia a resposta dele:
Stephen Chin wrote:
Rafael,

Thanks for the note. JavaFX 1.3 introduced some incompatible changes.
Fortunately, there is an easy fix. Just add this line:
autoSizeTiles: false

That should fix the problem with the Tile exception you are seeing.

Cheers,
--Steve

O código corrigido ficou assim:

E finalmente funcionou como esperado.


Não querendo reabrir o tópico, mas estou estudando esse mesmo livro, e acabei me deparando com diversos problemas, esse problema com a ligação dos tileWidth e titlHeight já estavam me tirando o sono.

Rafael Afonso você consegui executar todos os códigos do livro com perfeição?
tenho outras partes dos códigos de exemplos apresentando erro, e não consegui resolver.

Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
/DR\
Smalltalk

Membro desde: 19/11/2009 08:56:27
Mensagens: 4
Offline

Sim. Estou estudando a versão script por causa de meu TCC. Quando elaborei o projeto de TCC, no inicio do 7° semestre no ano passado, o fiz sobre a versão script do JavaFX, pois era a versão atual naquele período. Agora com meu projeto sendo sobre a versão script somado com a escassez de material sobre o versão 2.0, me parece mais conveniente concluir o TCC utilizando a versão script do projeto. Mas concluindo o TCC vou me atualizar com um bom livro da versão 2.0.
Depois dos diversos erros encontrados no livro Plataforma Pro JavaFx v 1.2, não sei se confio em comprar o livro da Apress com a versão atualizada.

This message was edited 1 time. Last update was at 14/03/2012 06:56:23

 
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team