Re:trocar de tela na interface gráfica

Dá uma olhada em JTabbedPane… Ele cria abas saca?! Fica bem organizado :slight_smile:

E sobre o visual editor, aquilo é pesado pra inferno mesmo… Sei lá, eu prefiro fazer tudo na mão mesmo, sem editor nenhum… Não conheço nenhum outro pro eclipse fora o visual editor!

Abraço!

um…
Faz tantas funções getContentPane quantas forem suas “telas”, tipo

getContentPane1()
getContentPane2()

etc

Cria uma classe para cada modelo de tela, todas extendendo JPanel, com os respectivos componentes e métodos get e set pro que for interessante… Cada um destes métodos getContetPane citados acima retorna um objeto de um destes tipos. Assim quando vc quiser “trocar de tela”. é só fazer

JFrame.this.setContentPane(getContetPane1());
...
...
...
JFrame.this.setContentPane(getContentPane2());

etc, etc

Qualquer dúvida posta ai!

Abraço!

O que exatamente vc quer dizer com “a aplicação tranca” ??

Ola!
Editor leve e bastante funcional, JCreator 3.50 PRO, NÃO PEGUE A VERSÃO 3.50LE, e sim 3.50PRO a trial por 30 dias(procura no google pela senha). POis a LE não é trial mas o programa é limitado…
Quanto ao seu problema, vc pode usar o [color=blue]CardLayout[/color]
com ele vc cria seus paineis, e com os metodos next, previous, e last, navega entre eles…
a “sintasi” e facil.

Como é que escreve sinta#%#$*…

Ola!!!

JPanel pMain = new JPanel(); //Painel que conterá os paineis autalizaveis
pMain.setLayout(new CardLayout());

JPanel tela1 = new JPanel();
tela1.setLayout(new FlowLayout());//o layout fica por sua conta...
pMain.add(tela1, "C1");

JPanel tela2 = new JPanel();
tela2.setLayout(new GridLayout(1,1,1,1));//o layout fica por sua conta...
pMain.add(tela2, "C2");

SuaJanela.add(pMain);

na ação que deverá mudar os paineis faça assim...
CardLayout cards = (CardLayout) pMain.setLayout();
if(se eu quero tela1 faça)
{
     cards.show(pMain, "C1");
}
else if(se eu quero tela2 faça)
{
    cards.show(pMain, "C2");
}

Você tambem pode usar os metodos next, previous, last, frist. ambos não precisam de explicação…

espero ter ajudado…

Não sei se te ajuda mas dá uma olhada nesse lugar:

http://www.teckler.com/pt/Lucasms1983/Uma-Forma-de-alterar-conte%C3%BAdo-da-janela-dinamica-47196

Se ajudar você blz…
É um jeito simples de alterar conteúdos de tela com o layout null, apesar de todos gostarem de layouts você perde o controle sobre tamanho e dimensão
e outras coisas na tela.

Se ajudar você, beleza.

Abraços.

Opa galera, beleza?
Seguinte, eu preciso fazer um trabalho. Nele eu tenho uma interface gráfica que seria o menu e outras com as opções. (Por exemplo opção de alterar os dados, e nela que será feita a alteração dos dados).
Acontece que eu não quero que as opções sejam abertas em uma janela diferente. como eu faço para que apenas o contentPane esteja seja atualzado?
No actionListener do botão eu tenho o seguinte código:

jFrame.removeAll(); jFrame.setContentPane(new ManterProjeto());

o contrutor da classe manter projeto é este:

public ManterProjeto(){ getJContentPane(); }

e o método getJContentPane é este:

public JPanel getJContentPane() { if (jContentPane == null) { manterLabel = new JLabel(); manterLabel.setBounds(new Rectangle(30, 14, 151, 20)); manterLabel.setText("Manter Projeto: "); jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.add(manterLabel, null); jContentPane.add(getProjetosList(), null); jContentPane.add(getCancelarButton(), null); jContentPane.add(getExcluirButton(), null); jContentPane.setVisible(true); } return jContentPane; }

ps: estou usando o Visual Editor, porém ele está pesando demais na minha máquina, estou pensando em trocar. Alguém sabe algum editor bom?

Abraço,
Oscar

Ae cara,
Obrigado pela resposta. Mas eu queria só trocar o conteúdo do container (cotões, textfields e etc). Abas é interessante, mas não pra essa aplicação, ficaria um pouco confuso.
Na pior das hispóteses eu dou um dispose e abro outra janela…

Oscar

ae cara,
obrigado de novo pela ajuda, mas mesmo assim não tá rolando :(.
Seguinte, no actionlistener do botão ele faz o seguinte:

projeto = new GUIIncluirProjeto(); //contrutor vazio, só pra instanciar o objeto jFrame.setContentPane(projeto.getJContentPane());

O getJContentPane é o método que eu uso pra fazer o setContentPane do JFrame da própria classe enquanto eu não consigo fazer tudo em uma, logo ele está funcionando.

Porém quando eu faço isso a aplicação tranca. Não sei porque…

Oscar

O botão fica com a “aparência” de pressionado e não é possível clicar em nenhum outro botão. Se eu minimizo e maximizo, o container aparece vazio.
Se te facilitar eu posso colocar o projeto em um arquivo zip pra tu dar uma olhada, se tu quiser.

squall: o JCreator substituiria o eclipse, não? Eu queria um plugin pro eclipse porque pelo que eu vi, para java esta é a IDE mais difundida, além de ser free. E sintaxe se escreve com “xe” hehe.

Oscar

Seguinte,
eu andei fuçando um pouco e descobri que o JPanel está com o atributo inválido. Não sei porque isto está acontecendo ou como arrumar.
Alguém pode me dar alguma idéia?
(eu olhei o primeiro JPanel e este está sendo validado quando o JFrame é instanciado e o visible dele é setado para true. Porém mesmo dando um repaint e um setVisible, o segundo JPanel continua inválido)

Oscar

Edit: Fiz um teste, abri uma frame nova e ele funciona, com este código:

JFrame new1 = new JFrame(); new1.setContentPane(projeto); (new1.getContentPane()).setVisible(true); new1.setVisible(true);

Apenas alterei o nome e setei o setResizable pra true, ficou assim:

jFrame.setResizable(true); jFrame.setContentPane(projeto); (jFrame.getContentPane()).setVisible(true); jFrame.setVisible(true);
Mas deixou de funcionar.
Isso tá me enlouquecendo. :frowning:

Bá, valeu cara!
quando chegar em casa eu dou uma olhada :slight_smile:
pelo visto vai dar certo :slight_smile:

Oscar

Funcionou cara!
obrigado pela paciência dos 2.

Só mas uma coisa, eu precisava redimensionar a tabela, achei que o pack faria isso, msa não faz. Teria como eu fazer automaticamente ou usaria o setsize pra isso?

edit: dei uma pesquisada, setei o preferedSize e funcionou.
De novo, obrigado pros dois :slight_smile:

edit2: Cara, o~s botões de cancel estão na outra classe, então eu passei as referências do cards por parâmetro. Ninguém morre por isto, né?
Mas acontece que eu quero dar Pack no jFrame. Tem como eu pegar a referência dele?

Oscar