Eu faço tudo na “unha” mesmo… Porém tenho classes padrões…que construí… Então quando vou formular uma tela, crio uma classe extendida da minha classe padrão de telas e só adiciono os componentes e “deu pra bola”… tudo é gerado…sem ferramentas visuais…
Eu acho essa forma boa, pois todo o sistema segue um padrão te formato de telas e a codificação também…
Outra vantagem seria na hora da manutenção… imagine vc fazer uma tela com vários componentes e funcionalidades… na hora da manutenção… vc nem vai se achar no meio daquele código gerado automaticamente…
Há quem goste de ferramentas visuais e há quem não goste… Depende de cada um e do que vai se implementar…
Outra dica. Para aprender, saia do Matisse e use por uns tempos o Visual Editor do Eclipse, nos layouts padrão (GridBag, Flow e Border). A grande vantagem é que o código do VE é bastante legível e cheio de boas práticas, bem diferente do Matisse. Dá para aprender bastante em termos de organização (especialmente no caso do GridBagLayout) só olhando o código automaticamente gerado por ele.
[quote=leopoldof]Eu faço tudo na “unha” mesmo… Porém tenho classes padrões…que construí… Então quando vou formular uma tela, crio uma classe extendida da minha classe padrão de telas e só adiciono os componentes e “deu pra bola”… tudo é gerado…sem ferramentas visuais…
Eu acho essa forma boa, pois todo o sistema segue um padrão te formato de telas e a codificação também…
Outra vantagem seria na hora da manutenção… imagine vc fazer uma tela com vários componentes e funcionalidades… na hora da manutenção… vc nem vai se achar no meio daquele código gerado automaticamente…[/quote]
Teria como disponibilizar um exemplo de como fazer isso? Achei muito interessante e estou desenvolvendo meu TCC, seria uma ótima prática.
eu vejo por ai certo preconceito com o ato de gerar janelas a partir de frameworks como o VE e o Matisse, especialmente o Matisse. Bom, uma coisa bastante alegada é que o código do matisse é macarrônico, extremamente difícil de qualquer um entender, certa vez li que o group layout foi feito para ser utilizado em ferramentas automatizadas, isso tem todo sentido. Se você criou um software com o matisse, deve guardar o projeto, com os .form e ao dar manutenção no software usar a mesma ferramenta que usou para cria-lo, senão é obvio que você terá problemas. Esse pessoal que cria as janelas no netbeans, cola as classes das janelas no eclipse e continua o trabalho a partir dai no eclipse, eu indico desde o começo usar o eclipse mesmo, senão ai sim você terá problemas na manutenção… Acredito que isso também vale para o VE, se você usou esse na criação do software, use na manutenção (mesmo que o código dele seja bem melhor que o do matisse).
Outra coisa também é que o uso do matisse não permite que a pessoa deixe de precisar aprender swing, não só é necessário, como certas coisas precisam ser codificadas na mão, certas vezes você precisa inicializar o componente de uma forma diferente por exemplo, o matisse te permite fazer isso, mas ai você que alterará o código de inicialização, digitando o novo inclusive.
A grande limitação que encontro é você ter que inicializar uma quantidade de componentes dinamicamente, como citou o vinigodoy (um conjunto de checkboxes cuja quantidade e dados venham do banco). Isso é uma limitação do matisse, mas ainda pode ser feito de forma elegante, você pode criar um painel e preencher estes componentes dinâmicos na mão, depois no seu JFrame no matisse inserir nele um painel e inicializa-lo como um objeto do seu painel criado, você não vai perder tanto por ter feito na mão essa parte, vai poder encapsular de forma bem feita na sua interface e de repente até da pra reaproveitar esse seu painel dependendo do caso (se não me engano tem um padrão que manda você fazer dessa forma, mas esqueci o nome).
[quote=polianomartini][quote=leopoldof]Eu faço tudo na “unha” mesmo… Porém tenho classes padrões…que construí… Então quando vou formular uma tela, crio uma classe extendida da minha classe padrão de telas e só adiciono os componentes e “deu pra bola”… tudo é gerado…sem ferramentas visuais…
Eu acho essa forma boa, pois todo o sistema segue um padrão te formato de telas e a codificação também…
Outra vantagem seria na hora da manutenção… imagine vc fazer uma tela com vários componentes e funcionalidades… na hora da manutenção… vc nem vai se achar no meio daquele código gerado automaticamente…[/quote]
Teria como disponibilizar um exemplo de como fazer isso? Achei muito interessante e estou desenvolvendo meu TCC, seria uma ótima prática.
[/quote]
você poderia por exemplo criar um JFrame padrão com os botões OK e Cancelar do lado direito inferior da janela e herdar esse seu JFrame em várias outras janelas do seu software… só um exemplo.
O gerenciador de layout do contentPane de um JFrame é o BorderLayout por padrão, para adicionar esses dois botões basta só criar um JPanel e adicioná-lo no PAGE_END do contentPane.
public class MeuFrame extends JFrame {
protected JButton ok;
protected JButton cancelar;
public MeuFrame() {
ok = new JButton("OK");
cancelar = new JButton("Cancelar");
FlowLayout fl = new FlowLayout(FlowLayout.RIGHT);// Cria um gerenciador de fluxo com os componentes alinhados à direita
JPanel p = new JPanel(fl);
p.add(ok);
p.add(cancelar);
super.getContentPane().add(p, BorderLayout.PAGE_END);// Adiciona o painel no final do frame
}
}
public class Teste extends MeuFrame {
... // Já herda os componentes adicionados acima
}
Pessoal, estou fazendo tudo na unha meu código, mais agora instalei o plugin do google pelo menos pra ajudar posicionar algumas coisas na tela, ajudar com algum auxilio, mais continuarei ajustando todo código na mão mesmo, até pela minha própria organização e para praticar.
Vantagem desse plugin que eu adorei ele constrói a janela a partir do seu código Java, não fica guardando informações em forms, arquivos xml, etc como outras IDEs, se pegar um código java feito na unha e rodar com o plugin é só de colocar na Haba Design e ele já constrói a janela referente seu código para que possa alterá-lo em modo Design como fazemos no netBeans e outros, outra vantagem achei rápido, pra quem gosta do Eclipse é um prato cheio.
Na instalação escolhi somente a opção do Swing mesmo, pra mim aqui por enquanto já é o suficiente.
O gerenciador de layout do contentPane de um JFrame é o BorderLayout por padrão, para adicionar esses dois botões basta só criar um JPanel e adicioná-lo no PAGE_END do contentPane.
[code]
public class MeuFrame extends JFrame {
protected JButton ok;
protected JButton cancelar;
public MeuFrame() {
ok = new JButton("OK");
cancelar = new JButton("Cancelar");
FlowLayout fl = new FlowLayout(FlowLayout.RIGHT);// Cria um gerenciador de fluxo com os componentes alinhados à direita
JPanel p = new JPanel(fl);
p.add(ok);
p.add(cancelar);
super.getContentPane().add(p, BorderLayout.PAGE_END);// Adiciona o painel no final do frame
}
}
public class Teste extends MeuFrame {
… // Já herda os componentes adicionados acima
}
[/code][/quote]
Boa idéia também…
Também daria para seguir a seguinte idéia
public class MeuFrame extends JFrame {
protected JButton ok;
protected JButton cancelar;
protected JPanel pInterno;
public MeuFrame() {
setLayout(new BorderLayout());
ok = new JButton("OK");
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
acaoOK();
}
});
cancelar = new JButton("Cancelar");//faz o mesmo para este botao como no OK
pInterno = new JPanel(new FlowLayout(FlowLayout.RIGHT));
pInterno.add(ok);
pInterno.add(cancelar);
add(pInterno,BorderLayout.SOUTH);
}
public void setPainelCentral(JPanel pnl){
add(pnl,BorderLayout.CENTER);
}
//Metodo que vc pode sobrescrever na classe que herdar esta
public void acaoOK(){};
}
depois na sua classe normal vc faz algo parecido com isso
public class Teste extends MeuFrame {
public Teste(){
... // Já herda os componentes adicionados acima
JPanel pnlcentral = new JPanel();
//Implementa aqui os componentes e adiciona no painel central depois adiciona ele no jframe
setPainelCentral(pnlCentral);
}
//sobrescreve o metodo de acao do botao ok
public void acaoOK(){
//aqui vc coloca as ações que quer que faça para a tela no botão OK
}
}
Claro isso é só para se ter uma idéia… para se seguir… dentro dessa idéia de herdar padrão dá pra abstrair um monte de coisa que geralmente o pessoal reimplementa várias de vezes no sistema…em cada telinha gerada…
tb prefiro usar na unha, depois de alguns incomodos, com o pronto. sem falar que tem que adicionar uma lib, em alguns casos… que depois nao funciona no jar…
segue um arquivo em que estou trabalhando. que foi feito na mao… inclusive tem um painel em 2d, que tb dá bastante mobilidade ao programa… é muito fácil usar 2d, na maioria dos casos, e é bastante dinamico tb…