Depois de um bom tempo sem uma nova versão, sai a versão 1.2 do SwingBean. A principal novidade é o mecanismo de binding que foi criado para que se possa obter objetos sincronizados com formulários e tabelas. Para isso basta obter o bean através do método getSynchoronizedObject() da classe JBeanPanel ou do método getSynchronizedList() da classe BeanTableModel. Dois novos tutoriais foram adicionados para mostrar o funcionamento dessas novas funcionalidades.
Outra coisa que foi alterada é que o SwingBean era feito para falhar silenciosamente, ou seja, se o nome de uma propriedade estava errado, ele simplesmente não dizia nada… Isso estava atrapalhando as pessoas a descobrir erros em seus programas. Devido a solicitações isso foi alterado e agora o SwingBean aponta as falhas através de exceções não-checadas. Por isso não estranhe se o seu programa que funcionava com a versão anterior lançar alguma exceção, pois pode ser algum erro que estava sendo omitido pelo framework.
A estrutura interna do SwingBean também foi melhorada e agora é possível adicionar novos componentes de interface para serem adicionados no formulário.
Agora o SwingBean também possui um fórum para que os desenvolvedores possam trocar idéias e experiências sobre o uso do framework! Agora aquelas respostas que eu dava individualmente para o pessoal por email, serão dadas pelo forum e servirão para outras pessoas que possuirem a mesma dúvida. O fórum está disponível no endereço http://www.ultimabrasil.com.br/forum/index.php?showforum=880 . Gostaria de agradecer ao Mauricio Nunes que foi quem teve a iniciativa de criar o fórum!!
Sem dúvida esse recurso da sincronização entre o form e o bean vai ser muito útil.
Já faz algum tempo que venho usando-o, e não tenho do que reclamar. O único problema que eu tive foi ao tentar capturar um campo TextArea.
Porque parece quando é chamado panel.getComponent(“campo”), ele sempre retorna uma nova instancia de um JScrollPane, e sendo assim o frame não consegue repintá-lo novamente.
Alguém saberia dizer se o JGoodies também possui este recurso?[/quote]
O JGoodies possui o JGoodies Binding que te auxilia a fazer esse tipo de coisa, porém você precisa colocar código nos seus beans para que ele faça isso. O SwingBean gera classes em tempo de execução usando o CGLib e você não precisa de mexer no seu bean para usar o binding. Vale a pena dar uma olhada!
Ele possui compatibilidade full sim!!! A única questão é que migrando para a versão 1.2 podem ocorrer algumas exceções que o SwingBean acabava camuflando. Isso pode até ajudar a você descobrir algum bug que ainda não havia sido detectado.
Estou guardando o título de 2.0 para quando o SwingBean possuir anotações e internacionalização.
Vejo em muitos blogs que os emails mandados diretamente ao desenvolvedor são respondidos como um novo post no blog.
E pelo visto você vai fazer isso também, parabéns é uma excelente iniciativa.
Porém, eu vi que as duvidas anteriores já foram respondidas, minha sugestão é: Porque não fazer um tópico somente com as duvidas e as suas respostas anteriores? Tipo um FAQ.
por isso a criação do forum caro amigo. la todos podem expor suas duvidas e as vezes nos mesmos tira-las ou entao o proprio desenvolvedor! isso e melhor que um faq ^^
Vejo em muitos blogs que os emails mandados diretamente ao desenvolvedor são respondidos como um novo post no blog.
E pelo visto você vai fazer isso também, parabéns é uma excelente iniciativa.
Porém, eu vi que as duvidas anteriores já foram respondidas, minha sugestão é: Porque não fazer um tópico somente com as duvidas e as suas respostas anteriores? Tipo um FAQ.
[ ]'s[/quote]
Realmente a presença de um FAQ ajudaria bastante. O problema é que existe uma falta de tempo da minha parte na criação de documentação para o SwingBean. Por isso, o fórum está ajudando bastante, pois as perguntas que respondia individualmente para cada um, agora estão ficando registradas para todos. Talvez não seja o tipo ideal, mas já é o começo…
Estamos precisando de colaboradores… Então se quiser ajudar o framework pegando as principais questões do forum e criando um FAQ para colocarmos no site, sua ajuda será muito bem vinda!!!
Guerra tenho um código em C# de uma aplicação minha que faz o seguinte.
A primeira letra de cada palavra e convertida para maiusculo…e o restante minusculo…esse metodo eu encapsulei ele em um classe…especializada no componente TextBox do .NET. Que tal fazer isso no JAVA.
veja o codigo…
[code]//Se a primeira Letra for Maiuscula
void PMA()
{
//Inicia tratamento de erro
try
{
this.Cursor = Cursors.Arrow;
System.Threading.Thread.Sleep(20);
// Guarda em _words a lista de palavras do texto de TextBox1.
string[] _words = base.Text.Split(’ ‘); //base.Text.Split(’ ');
// Cria um array para conter a lista das palavras com as primeiras maiúsculas.
string[] _newWords = new string[_words.GetLength(0)];
string _newString = “”;
// Para cada palavra do texto.
for (int _counter = 0; _counter <= _words.GetLength(0) - 1; _counter++)
{
// Pega a palavra atual.
string _word = _words[_counter];
// Se a palavra atual não for “”.
if (!_word.Equals(string.Empty))
{
// Converte a primeira letra da palavra para maiúsculo e o resto para minúsculo e guarda no array _newWords.
_newWords[_counter] = _word[0].ToString().ToUpper() + _word.Substring(1).ToLower();
}
else
{
_newWords[_counter] = _word;
}
}
// Para cada palavra presente em _newWords.
for (int _counter = 0; _counter <= _newWords.GetLength(0) - 1; _counter++)
{
// Se estiver na primeira palavra.
if (_counter.Equals(0))
{
// _newString = primeira palavra
_newString = _newWords[_counter];
}
// Senão for a primeira palavra
else
{
// _newString = conteúdo atual de _newString + palavra atual.
_newString = _newString + " " + _newWords[_counter];
}
}
// Se o texto novo for diferente do que já estiver presente no TextBox.
if (!base.Text.Equals(_newString))
{
// Substitui o texto antigo pelo novo.
base.Text = _newString;
// Posiciona o cursor no último caractere.
base.SelectionStart = base.Text.Length;
}
}
catch (Exception)
{
throw new Exception("Erro interno");
}
finally
{
this.Cursor = Cursors.Default;
}
}[/code]