ABRIR JFRAME DENTRO DE UM JPANEL.
Bom dia !!
Tem como eu abrir uma classe que existe uma janela Jframe dentro de um classe principal do programa para abrir no Jpanel da classe principal ??
Grato
Bruno Monteiro
Bmmonteiro
Curtidas 0
Respostas
Adriano Godinho
09/04/2009
Vê se isto te ajuda:
[url]http://www.javafree.org/javabb/viewtopic.jbb?t=864804[/url]
GOSTEI 0
Bmmonteiro
09/04/2009
Entao godinho, deu certo valeu, mas eu queria o seguinte eu tenho uma classe (arquivo) com Jframe e queria abrir dentro de um JdesktopPanel em outra classe java quer seria a principal quado eu acionar um evento pelo mouse !!!! entendeu ??? teria como ??
GOSTEI 0
Adriano Godinho
09/04/2009
Se entendi direito você quer que o JFrame funcione como um JInternalFrame?
Se você precisa que uma classe seja utilizada das duas formas, talves seria melhor transformar o seu JFrame em um JPanel, assim quando precisar utilizar como um frame é só criar o seu frame e adicionar o conteúdo, o mesmo vale pro JInternalFrame.
Outra forma seria você criar a instância do seu JFrame e em seguida chamar o método getContentPane() do seu JFrame, guardar a referência retornada pelo método, remover este painel do JFrame :
Depois pega esta instância de painel e adiciona à uma instância do internal frame. Mas tem um problema em fazer isto:
1- É uma puta gambiarra;
2 - Se sua janela tiver um JMenu, acho que ele não vai.
De qualquer forma vou ver se é possível fazer esta conversão...se encontrar um jeito posto aqui!
flw
frame.remove(instanciaContentPanel)
GOSTEI 0
Bmmonteiro
09/04/2009
Vamu la vo t explicar...valeu por tudo,
Entao, tenho uma classe principal q contem um Jframe com menu e dentro do Jframe um Jpanel, para abrir os menu, entao q eu quero q dentro desse JPanel abra os evento do menu que puxem de uma outro arquivo java ??? como eu poderia fazer isso ?????
[]´s
Brunom
GOSTEI 0
Adriano Godinho
09/04/2009
Hehehe, isto já tá ficando cômico! Mas vamo lá! Você quer que:
1 - ao invocar os eventos do seu JMenu coisas aconteçam no seu JPanel? Coisas do tipo: mudar o painel que está sendo exibido?
2 - o seu JPanel, que está inserido no seu JFrame, tenha um JMenu assim como o JFrame?
3 - eu fasse um curso de interpretação de linguagem de internet?
4 - nda.
Digite uma das opções acima (evite ambiguidades na escolha): _____:hauhau:
GOSTEI 0
Bmmonteiro
09/04/2009
HEhehhh iisso meu camarada opção 1 !!!!
grato
brunom
GOSTEI 0
Adriano Godinho
09/04/2009
Ok.
Vou dividir a solução em algumas etapas:
1 - Primeiro você tem que criar sua janela, óbvil. E na classe que representa a sua janela (pode ser em outra classe, e até mesmo outro arquivo, mas acho que na mesma fica mais organizado) você deve adicionar um ActionListener.
2 - Depois de criar o listener (atributo listenerJmiMenuItem), você tem que adicionalo ao seu item de menu:
3 - Agora para as coisas que estão nos seu JPanel internos (pnlLogin e cia) receberem também os eventos do seus botões do menu, você tem que fazer as classes que você implementou para representar os paineis internos implimentar a interface ActionListener.
4 - Depois só fazer com os seus paineis internos o mesmo que foi feito no item 2. Ou seja, adicionar seus paineis como listeners dos seus botões de menu:
Assim, como pnlLogin é listener do jmiLogin, sempre que clicar no jmiLogin o evento será chamado nos painéis internos.
DICA: Não acho uma boa idéia tratar os eventos do menu nos paineis internos, trate todos eles com listeners que estão no seu painel principal, ai então quem vai cuidar de dar um trato nos paineis internos vai ser só esta classe "principal".
public class Janel extends JFrame
/*
* Supondo ser este o seu painel contido no JFrame. Ele não tem nada de
* início, ele servirá como containers exclusivos dos seus painéis
* especializados.
*/
private JPanel pnlProblematico;
/*
* Esta é uma referencia para um objeto de uma das classes que voce
* quer ver no seu Frame. Ela tem que extender alguma classe que extende
* Component, o ideal é JPanel. Dai no código dela você configura layout
* conteúdo etc.
*/
private PainelLogin pnlLogin;
/*
* Outra classe que você deve implementar do jeito que quiser.
*/
private Painel2 pnlPainel2;
private JMenuItem jmiLogin;
private ActionListener listenerJmiMenuItem = new ActionListener(){
public void actionPerformed(ActionEvent evt){
/*
* Aqui vai estar o código responsável por fazer o troca-troca
* de paineis. Vamos supor que exista um item de menu chamado login,
* que quando clicado a tela de login, que é pnlLogin, deva ser
* exibida.
*/
if(evt.getSource() == jmiLogin){
AsahpTopLevel.this.pnlProblematico.removeAll();
AsahpTopLevel.this.pnlProblematico.add(
AsahpTopLevel.this.pnlLogin);
}
}
};
//Suponha que o item do seu menu seja jmiLogin
jmiLogin = new JMenuItem("Login");
jmiLogin.addActionListener(listenerJmiMenuItem);
jmiLogin.addActionListener(pnlLogin);
GOSTEI 0
Jonathas
09/04/2009
olá Sou iniciante em java e preciso saber como faço para adicionar um jframe dentro de um jpanel , eu ouvi falar de um comando chamado [getcontentPane] .
gostaria de saber como funciona de um jeito bem detalhado.
e tenho mais um problema eu fiz meu jframe com o jbutton td certo ,mas quando eu saio do meu projeto e volto novamente só aparece o jframe(tela vázia).
Grato.
GOSTEI 0