Sistema Desktop com swing

14 respostas
M

Boa tarde a todos. Estou planejando a migração de um sistema em Delphi para Java Swing e gostaria de receber algumas dicas sobre as melhores práticas a adotar. Até já desenvolvi alguma coisa, mas não queria terminar todo o sistema sem ter certeza de estar usando todas as funcionalidades do Java. O sistema é com telas MDI para consulta (um grid para exibir os cadastros, campos para consulta e botões para incluir excluir e alterar) e telas modal para os cadastros, tem relatórios e conexão Firebird. Gostaria de manter essas funcionalidades. Quero usar herança nos formulários (faço todo o layout da tela na não). Sabem se há agum material que eu possa me basear?

14 Respostas

ViniGodoy

http://www.guj.com.br/posts/list/104644.java#565211

M

Ok, valeu pela dica. Porém o problema é com o uso dos gerenciadores de layout. Uso NullLayout, porque preciso que aparce o label a esquerda e o textfield a direita. Alguma sugestão?

S

Olá amigo

dê uma olahda em:

http://oswing.sourceforge.net/

Silvio Guedes

Marky.Vasconcelos

Esse é o argumento mais estranho(para não dizer idiota) que já ouvi para justificar o uso do NullLayout.
Começe a aprender os LayoutManagers que vão te poupar MUITO trabalho no futuro.

Estude os basicos e o MigLayout, uma tela legal é organizada com varios Containers devidamente organizados por algum LayoutManager.

M

Mark_Ameba:
marcio_teixeira:

Uso NullLayout, porque preciso que aparce o label a esquerda e o textfield a direita.

Esse é o argumento mais estranho(para não dizer idiota) que já ouvi para justificar o uso do NullLayout.
Começe a aprender os LayoutManagers que vão te poupar MUITO trabalho no futuro.

Estude os basicos e o MigLayout, uma tela legal é organizada com varios Containers devidamente organizados por algum LayoutManager.

Pode parecer (ou ser) idiota mesmo. Mas o caso é que não sei e tenho que aprender. Mesmo montando as telas ‘na não’ o uso do NullLayout não é recomendado? E as telas tem tamanho fixo, não serão redimensionadas.

Felagund

marcio_teixeira:
Mark_Ameba:
marcio_teixeira:

Uso NullLayout, porque preciso que aparce o label a esquerda e o textfield a direita.

Esse é o argumento mais estranho(para não dizer idiota) que já ouvi para justificar o uso do NullLayout.
Começe a aprender os LayoutManagers que vão te poupar MUITO trabalho no futuro.

Estude os basicos e o MigLayout, uma tela legal é organizada com varios Containers devidamente organizados por algum LayoutManager.

Pode parecer (ou ser) idiota mesmo. Mas o caso é que não sei e tenho que aprender. Mesmo montando as telas ‘na não’ o uso do NullLayout não é recomendado? E as telas tem tamanho fixo, não serão redimensionadas.

O ideal é usar algum layout pronto, existem layouts organizados que podem facilitar e muito o seu trabalho, o uso do NullLayout não é recomendado não.

Marky.Vasconcelos

Realmente, nunca é recomendado.
Fora que qualquer manutenção (e pode crer que haverá) nesse código, será o maior caos. Experiencia própria.

LayoutManagers dão um certo trabalho para aprender mas compensa muito para escrever telas na mão. E eu, assim como voce, gosto de criar as telas na mão.
So… MigLayout it!

M

Então o negócio e aprender mesmo! Algum exemplo?

Marky.Vasconcelos

www.miglayout.com/QuickStart.pdf

ViniGodoy

Infelizmente as telas serão redimensionadas, mesmo que o tamanho delas seja fixo.

Lembre-se: O java é multi-plataforma. E essa é a grande motivação para usa-lo. Aí, basta que o usuário troque de SO, e fontes mudam de tamanho, as barras de título mudam de forma, etc. E não precisa ir muito longe, uma mudança de XP para Windows vista ou 7 já produz esse efeito. Como o tamanho da tela refere-se ao tamanho total, não a área útil, pode ser que todo layout quebre nessa brincadeira.

Sem falar que usuários tendem a gostar de redimensionar telas. Usar os layout managers, apesar de um pouco trabalhoso no início, dá esse benefício imediatamente, o que mais do que compensa o esforço. Com o null layout, para fazer uma tela redimensionável, você terá que usar de muita matemática. Simples, é verdade, mas extremamente trabalhosa. Os layoutmanagers fazem essa continha para você, sem nenhuma linha de código extra.

M

Mas como eu faço para resolver esse problema: a janela é criada com um tamanho padrão na minha classe base, porém que ao extender para outras classes os painéis tenham seu tamanho ajustado automaticamente, só que isso não ocorre:

Meu código
public class Layout extends JFrame {
    public Layout() {
        JPanel telaBusca = new JPanel();
        telaBusca.setPreferredSize(new Dimension(200, 300));
        telaBusca.setBackground(Color.YELLOW);

        JPanel telaControle = new JPanel();
        telaControle.setPreferredSize(new Dimension(600, 40));
        telaControle.setBackground(Color.CYAN);

        JPanel telaRegistro = new JPanel();
        telaRegistro.setPreferredSize(new Dimension(400, 260));
        telaRegistro.setBackground(Color.white);

        getContentPane().add(telaControle, BorderLayout.SOUTH);
        getContentPane().add(telaRegistro, BorderLayout.EAST);
        getContentPane().add(telaBusca, BorderLayout.WEST);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
    public static void main(String[] args) {
        new Layout();
    }
}

Ou seja, gostaria que os JPanels ficassem ancorados às bordas.



ViniGodoy

http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html

M

Ok, resolvido. Valeu!

Mikhas

Tambem aconselho usar o SpringLayout. Eu quem não costumo usar Swing achei bem facil.

Criado 21 de junho de 2010
Ultima resposta 25 de jun. de 2010
Respostas 14
Participantes 6