[Resolvido] Duvida - Layout

Boa tarde;

Sou inciante Java, sempre usei o Layout como null, ou quando quero fazer com que o Scroll siga o redimensionamento da tela uso o setLayout(new BorderLayout());

Estava vendo o MigLayout como gerenciador, dizem que ele é muito bom e os botões se redimensionam conforme a resolução da tela (o que é muito bom);

Pra scroll, tabelas ele funciona bem?

Qual vocês podem me indicar?

Obrigado;

Uso o Miglayout e, para mim, é o melhor gerenciador de layout. Por ser fácil de configurar e de aplicá-lo, ele reduz o tempo perdido com redimensionamento, tamanho e posicionamento de forma incrível. E respondendo a sua dúvida, ele responde muito bem à tabelas e grids, basta saber configurá-los de forma correta com o MigLayout.

Recomendo o estudo deste Gerenciador.

Abraço

Olá;

Obrigado pela resposta;

Me corrija se eu estiver errado, mas esse gerenciador serve somente para posicionar melhor os componentes no painel?

Não, é um gerenciador completo! É possível fazer tudo o que se faz nos gerenciadores de layout mais modernos e o seu uso é bem simples.

http://www.miglayout.com/

Abraço e bom estudo

Hum…

Eu dei uma olhada, fiz uns testes, vi que ele trabalha mais facil com componentes

com ele consigo modificar o modelo da janela?

Gostei da imagem que tem na tela inicial do site oficial deles;

Consigo fazer uma janela como aquela com o MigLayout?

Obrigado;

package guj;

import java.awt.BorderLayout;

public class Example01MigLayoutFrame extends JFrame {

    private JPanel contentPane;
    private JLabel lblFirstName;
    private JLabel lblSurname;
    private JTextField textField;
    private JTextField textField_1;
    private JLabel lblAddress;
    private JTextField textField_2;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Example01MigLayoutFrame frame = new Example01MigLayoutFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Example01MigLayoutFrame() {
        setTitle("Example 01");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 105);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new MigLayout("", "[][grow][][grow]", "[][]"));
        contentPane.add(getLblFirstName(), "cell 0 0,alignx trailing");
        contentPane.add(getTextField(), "cell 1 0,growx");
        contentPane.add(getLblSurname(), "cell 2 0,alignx trailing");
        contentPane.add(getTextField_1(), "cell 3 0,growx");
        contentPane.add(getLblAddress(), "cell 0 1,alignx left");
        contentPane.add(getTextField_2(), "cell 1 1 3 1,growx");
    }
    private JLabel getLblFirstName() {
        if (lblFirstName == null) {
        	lblFirstName = new JLabel("First Name");
        }
        return lblFirstName;
    }
    private JLabel getLblSurname() {
        if (lblSurname == null) {
        	lblSurname = new JLabel("Surname");
        }
        return lblSurname;
    }
    private JTextField getTextField() {
        if (textField == null) {
        	textField = new JTextField();
        	textField.setColumns(10);
        }
        return textField;
    }
    private JTextField getTextField_1() {
        if (textField_1 == null) {
        	textField_1 = new JTextField();
        	textField_1.setColumns(10);
        }
        return textField_1;
    }
    private JLabel getLblAddress() {
        if (lblAddress == null) {
        	lblAddress = new JLabel("Address");
        }
        return lblAddress;
    }
    private JTextField getTextField_2() {
        if (textField_2 == null) {
        	textField_2 = new JTextField();
        	textField_2.setColumns(10);
        }
        return textField_2;
    }
}

Não mexi uma linha de codigo - usei o plugin WindowBuilder do Eclipse, que me gerou esta tela.

A propósito, aquela janelinha com os três botões em forma de bolinhas foi obtida no MacOSX.

O que você chama de “mudar o modelo da janela”? Se for o que estou pensando, é o “look & feel”, e isso não é responsabilidade do MigLayout.

Além disso, mudar o tamanho da fonte dos botões e outros elementos da tela conforme muda o tamanho da janela também não é responsabilidade do gerenciador de layouts.

Hum…

Bom… eu não gosto de usar plugin…

Então pelo o que eu entendi, ele serve para auxiliar na manipulação dos componentes na tela…

Pelos testes que eu fiz, realmente é bom, assim é mais fácil para manter a portabilidade para vários tipos de resoluções, já que eu posso posicionar os botões e textos pelo tamanho da janela;

Farei melhores teste depois para ver se vale a pena trabalhar com ele ou não;

Obrigado a todos ^^

[quote=entanglement]A propósito, aquela janelinha com os três botões em forma de bolinhas foi obtida no MacOSX.

O que você chama de “mudar o modelo da janela”? Se for o que estou pensando, é o “look & feel”, e isso não é responsabilidade do MigLayout.

Além disso, mudar o tamanho da fonte dos botões e outros elementos da tela conforme muda o tamanho da janela também não é responsabilidade do gerenciador de layouts. [/quote]

Obrigado pelo esclarecimento

Eu também achava isso, até que vi que:
a) O WindowBuilder deixava meu código bem mais organizado
b) Consigo desenhar uma tela decente em alguns minutos (experimente descobrir as opções do MigLayout da tela acima assim, na unha
c) Se precisar fazer alguma coisa que depende de código, o WindowBulder deixa mexer diretamente no código, o que não é o caso do Netbeans (que proíbe você fazer isso; para customizar as coisas preciso mexer em 200 telas diferentes do Netbeans e isso me dá nos nervos. )

[quote=entanglement][quote=mariogpr]
Bom… eu não gosto de usar plugin…
[/quote]

Eu também achava isso, até que vi que:
a) O WindowBuilder deixava meu código bem mais organizado
b) Consigo desenhar uma tela decente em alguns minutos (experimente descobrir as opções do MigLayout da tela acima assim, na unha
c) Se precisar fazer alguma coisa que depende de código, o WindowBulder deixa mexer diretamente no código, o que não é o caso do Netbeans (que proíbe você fazer isso; para customizar as coisas preciso mexer em 200 telas diferentes do Netbeans e isso me dá nos nervos. )
[/quote]

Realmente é bem mais facil e deixa um código mais limpo, organizado… porém, não me agradou, consigo fazer o mesmo na unha com um código que eu acho melhor;

Pelo o que eu percebi, o MigLayout não é muito dificil de trabalhar, aprender os comandos dele não é problema;

Mas mesmo assim, obrigado;

Também gosto de fazer na mão!Nunca experimentei o WindowBuilder como citado, mas os que experimentei, enxiam o código de coisas desnecessária para uma aplicação pequena.

Se não gsota de plugins, tem um layout nativo do java chamado GridBagLayout, ele é meio chatinho para configurar mas é possível fazer praticamente tudo nele.

Abraço