Lançado SwingBean 1.2!

15 respostas
Guerr

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!!

15 Respostas

fabim

Muito bom.

Apesar de existirem 1 milhão de frameworks web, SwingBean é padrão pra Desktop.

peerless

demorou mais chegou!

acopiara

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.

Parabéns Guerra.

Filipe_Chagas

Alguém saberia dizer se o JGoodies também possui este recurso?

Guerr

Alguém saberia dizer se o JGoodies também possui este recurso?

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!

peerless

uma pergunta: Acoplar os eventos (ApplicationAction) na view, é uma boa prática tratando-se de swing, mais precisamente, do swingbean ?

Ednelson

Parabéns Guerra, pelo update que no meu ponto de vista é digno do titulo de 2.0. Soh uma pergunta, a compatibilidade com a versao anterior eh full.

Guerr

Diga Ednelson!!!

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.

A

Fala Guerra, uma sugestã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.

[ ]'s

Mauricio_Nunes

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 ^^

internetws

Isso é o mesmo sistema usado em IDEs como Delphi, Visual Studio?

Guerr

afsrj:
Fala Guerra, uma sugestã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.

[ ]'s

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!!!

Guerr

Não. O SwingBean tem uma idéia diferente e não auxilia apenas no desenho das telas, mas também na interação com os componentes.

N

Alguem ai poderia me explicar o por que que da erro quando eu gero um .JAR com SwingBean…

Eu configuro certinho, a classe principal… mas quando tenho abrir o ponto jar, da o erro que diz que ele nao pode achar a classe principal…

To quebrando a cabeça, mas nada o que eu faço funciona…

sfidencio

Guerra tenho um código em C# de uma aplicação minha que faz o seguinte.

1. 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..

//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  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;
            }
        }
Criado 7 de fevereiro de 2008
Ultima resposta 8 de ago. de 2009
Respostas 15
Participantes 11