JInternalFrame.setVisible(true) - n funfando

14 respostas
F

Então, eu tenho um método no meu Frame assim:

private void pagamentovendasButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

if(formaspagamentovendasComboBox.getSelectedIndex() == 1){

vendaDinheiroFrame.setVisible(true);

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 2){

vendaChequeFrame.setVisible(true);

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 3){

vendaCartaocreditoFrame.setVisible(true);

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 4){

vendaCartaodebitoFrame.setVisible(true);

}

}

eu queria que quando eu selecionasse o combobox e apertasse o botão pagamento, aparecesse o JInternalFrame, mas não ta funcionando assim, alguém pode me dizer porque?

obrigado

14 Respostas

H

axo q eh simples…

vc precisa adicionar o JInternalFrame ao seu container antes de dar o setVisible(true), ou seja:

add(JInternalFrame, javax.swing.JLayeredPane.DEFAULT_LAYER); //se o container for um JFrame

desktopPane.add(JInternalFrame, javax.swing.JLayeredPane.DEFAULT_LAYER); //se for um desktopPane o container (o aconselhavel eh adicionar dentro de desktopPane)

outra dia dica eh: nao precisa dar setVisible(true) se vc setar a propriedade Visible do JInternalFrame.

testa ai e diz se pegou…

F

então, antes ele estava fora do JFrame, agora eu ja coloquei dentro e parece ter funcionado… mas quando eu inicio o programa, esses JInternalFrame, ja aparecem, mesmo com o visible não selecionado, eu até tentei colocar setVisible(false) pra eles no construtor mas msm assim ainda aparecem quando inicia o programa. minha idéia era que quando a pessoa escolhesse a forma de pagamento atraves do combobox e apertasse ok, então abriria esses JInternalFrame de pagamento.

obrigado pela sua ajuda,espero que continue me dando um help hehe…

abraços

M

Olá,

Para o JInternalFrame, tente usar o metodo show() no actionListener de seus botoes.

H

tipo, seguinte, se foi isso q entendi:

vc deve fazer o seguinte…

  1. crie uma classe q sera seu JInternalFrame, ponha nela setVisible(false).

  2. onde vc for instacia-la ponha:

JInternalFrame jif = new NewJInternalFrame();
desktopPane.add(jif, javax.swing.JLayeredPane.DEFAULT_LAYER); //adiciona JInternalFrame no desktopPane de onde vc quer q apareca
jif.show(); //so precisa dessa opcao se a propriedade VISISBLE do JInternalframe nao estiver setada ON.

se vc quer aparecer qnd clica no combo, no action do combo vc coloca esse codigo 2. tem erro nao, acho dificil n pegar.

F

galera ainda sem exito :frowning:

olhem como está a parte que eu fiz no código

import java.*;

public class Interface extends javax.swing.JFrame {

/** Creates new form Interface */
public Interface() {
    initComponents();
    vendaDinheiroFrame.setVisible(false);
    vendaChequeFrame.setVisible(false);
    vendaCartaodebitoFrame.setVisible(false);
    vendaCartaocreditoFrame.setVisible(false);
    add(vendaDinheiroFrame, javax.swing.JLayeredPane.DEFAULT_LAYER); //n sei se é necessário msm esses adds
    add(vendaChequeFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);
    add(vendaCartaocreditoFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);
    add(vendaCartaodebitoFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);
}
private void pagamentovendasButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

if(formaspagamentovendasComboBox.getSelectedIndex() == 1){

vendaDinheiroFrame.setVisible(true);

vendaDinheiroFrame.show();//ainda não funcionando

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 2){

vendaChequeFrame.setVisible(true);

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 3){

vendaCartaocreditoFrame.setVisible(true);

}

if(formaspagamentovendasComboBox.getSelectedIndex() == 4){

vendaCartaodebitoFrame.setVisible(true);

}

}
private void sairdinheirovendasButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                         
    // TODO add your handling code here:
    vendaDinheiroFrame.setVisible(false);
}                                                        

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Interface().setVisible(true);
        }
    });
}
H

rpx eu testei isso aqui faz nem 3 dias e pegou como eu disse.

faca o seguinte se vc tiver usando netbeans 5 (acho o mais novo poder ter a opcao tb), cria um exemplo de aplicacao MDI q tem la, ja vem nele. nela vai ter uma JFrame com um JMenuBar e JDesktopPane. vc cria a JInternalFrame. vai la na JFrame poe no codigo action do combobox:

JInternalFrame jif = new NewJInternalFrame();
desktopPane.add(jif, javax.swing.JLayeredPane.DEFAULT_LAYER);
jif.show();

ou entao tenta adicionar um JDesktopPane a essa sua jFrame e dar o add da JInternalFrame usando esse JDesktopPane e dps um JInternalFrame.show() p ve se n aparece. pq o aconselhavel eh adicionar o JInternalFrame ao JDesktopPane e nao ao JFrame.

se n pegar, n sei q danado ta dando, pq aqui pegou tranquilo.

F

ok, irei tentar novamente, obrigado pela ajuda de todos, jaja posto o resultado aqui

F

aqui está o que eu ja fiz, ainda não consegui, estou usando o netbeans 6, se alguém puder me dar uma luz, os jinternalframe ja estão dentro de um jdesktoppane que esta dentro do jframe, e msm assim não vai… http://www.4shared.com/dir/5171164/df10645c/Java.html
o que eu quero esta na guia venda, venda. la embaixo tem opção de pagamento no combobox, ai quando aperta o botão pagar era pra aparecer os jinternalframe…

obrigado denovo… flw

F

eu tava criando 1 desktoppane pra todos os jinternal frame, eu consegui agora fazendo 1 desktoppane pra cd jif… mas ainda fica um quadrado branco no meio do programa depois q eu chamo os jinternalframes, como eu sumo com aquilo? vlw aqui vai até onde estou no projeto http://www.4shared.com/file/33774937/7442191b/Empresa2.html

vlw

F

problemas resolvidos hehe… vlw galera, abração a todos, e vlw pela ajuda, qq coisa volto a postar

H

vc conseguiu arrumando do jeito q falei +ou-?

F

então, eu criei um desktoppane pra cada internalframe, e os coloquei pra fora do jframe principal, os setei o contrutor assim:

public Interface() {

initComponents();

add(vendaDinheiroFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);

add(vendaChequeFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);

add(vendaCartaocreditoFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);

add(vendaCartaodebitoFrame, javax.swing.JLayeredPane.DEFAULT_LAYER);

vendaDinheiroFrame.setVisible(false);

vendaChequeFrame.setVisible(false);

vendaCartaodebitoFrame.setVisible(false);

vendaCartaocreditoFrame.setVisible(false);

}

isso ae…

:slight_smile:

H

eh como falei, eh aconselhavel usar jinternalframe c desktopane, tanto q pegou.

F

vlw pela ajuda!!!

Criado 28 de dezembro de 2007
Ultima resposta 4 de jan. de 2008
Respostas 14
Participantes 3