Quando começamos a estudar uma nova linguagem é comum brincarmos com a impressão de textos, o clássico
Hello World. O objetivo desse post é explorar características do tipo String no
JavaFx a partir da definição de literais, concatenação de strings, o uso de expressões para atribuição de valores até o mecanismo nativo de internacionalização. No fim do post o leitor pode ter uma ideia de como o JavaFx torna flexível o uso
java.lang.String.
JavaFx a Linguagem

Linguagem que compõe a
Plataforma JavaFx mantida pela Oracle para a construção de aplicativos RIA para Desktop, Mobile e TV.
É uma linguagem de Script, compilada, que roda sob a JVM,
mais nova e com uma cara bem diferente do Java com a proposta de tornar o desenvolvimento
RIA mais interessante.
O conteúdo de uma string pode ser definido com aspas duplas - da mesma forma que o Java - ou usando aspas simples:
println('Aspas simples');
println("Aspas duplas");
Outra característica similar ao Java, é a possibilidade de utilizar caracteres de escape, a seguir um exemplo do
\t fazendo a tabulação no conteúdo:
println("Usando caracteres de escape: \ttab");
Aspas simples podem ser usadas com aspas duplas ou vice-versa, sem a necessidade do
\' veja:
println("Tudo 'junto' e misturado!"); //imprime: Tudo 'junto' e misturado!
Um exemplo de string definido a partir de caracteres unicode:
// imprime: こんにちは、世界!
println("\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01");
Value Type
O tipo String é considerado
Value Type, ou seja o conteúdo é imutável (qualquer manipulação gera um novo objeto) e o
valor default de uma variável desse tipo é diferente de null.
No próximo trecho um exemplo de uma variável sem inicialização, com valor default:
var s: String;
println(s.equals("")); // imprime: true
String-expression
Uma alternativa mais inteligente e leve para concatenar strings através de
{ }. Com essa funcionalidade o código p/ mapeamento de
queries (JDBC/JPA) no Java seria bem mais elegante!
Veja exemplos:
def nome = "Claudia";
println('Bem-vindo(a) {nome}'); //imprime: Bem-vindo(a) Claudia
// repare que na quebra de linha ñ foi necessario o uso de +
def sql = "select * from clientes c "
"where c.nm like '{nome}'%";
A concatenação é definida em tempo de compilação. Outro detalhe sobre
expression é a opção de vincular uma condição ao conteúdo da string, a semântica parecida com o operador ternário do Java.
println("Bem-vindo(a) { if (not nome.equals('')) nome else 'Desconhecido' }!");
Simplicidade em
aplicar formatação é mais uma caracterísitica de
string-expression, veja exemplo de com data e um número:
println("Hoje: {%tA java.util.Date{}}"); // tA formata o nome do dia
var valor = 285.3668;
println("Total a debitar: {%.2f valor}"); // imprime: Total a debitar: 285,37
i18n / String localization

O JavaFx adota um mecanismo nativo para interpretar strings através de chaves e valores mapeados em arquivo properties, de uma forma bem simples sempre que double hash
## for usado o fx processa o conteúdo como um chave.
A seguir um exemplo de como acessar a chave 'Mensagem Inicial' dentro de um script JavaFx, assumindo que o arquivo
Teste.fx, essa chave deveria ser mapeada no arquivo
Teste_pt_BR.fxproperties no mesmo diretório (pacote) do script fx. O sufixo
pt_BR indica o locale da máquina, isso pode ser configurado via código, assumindo a escolha do usuário por exemplo.
//codigo JavaFx - Teste.fx
println(##"Mensagem Inicial"); // imprime: Bem-vindo(a)
A seguir o conteúdo no arquivo properties, repare que ambas chave e valor são definidas entre
"":
"Mensagem Inicial"="Bem-vindo(a)"
Caso o chave não exista, o JavaFx imprime o valor 'Mensagem Inicial'. Uma opção seria definir a chave c/
[] informando o valor default, usado caso a chave não seja encontrada.
Veja o exemplo:
println(##[Outra Mensagem]"Mensagem com valor default");
Acesse o site principal da platataforma e veja mais sobre o JavaFx:
http://javafx.com
Na Globalcode temos um
mini-curso e
Hands-on de JavaFx.
[]s
Eder Magalhães
www.yaw.com.br
twitter.com/youandwe
twitter.com/edermag