Janela principal por cima da janela secundária

40 respostas
CostaJava

Estou com esse problema e gostaria muito de resolver. Pois já visitei vários sites e nada.

40 Respostas

rodriguesabner

provavelmente você setou a opção AlwaysOnTop no seu JFrame , isso faz com que ele fique acima de qualquer coisa, até de um JOptionPane, pra “consertar” é só tirar essa propriedade.

CostaJava

Olá orochimaru. O que vc me sugeri para resolver essa questão?

rodriguesabner

Primeiro vc precisa saber se é isso mesmo. Se for, é só desmarcar a opção Always on top, se você escreveu via código, é só apagar a linha.

CostaJava

Ok. Deu certo.

CostaJava

Meu amigo obrigado pela ajuda. Mas tenho também outra duvida. Seguinte: Como mudar a propriedade de um controle(JTextField) que está no formulário mãe por meio de outro que está em formulário filho(este dentro de um JDesktopPane)? Isso vai me ajudar muito.

rodriguesabner

que propriedade vc quer mudar?

CostaJava

ForeColor. Eu clico em botão(que está no form filho) para mudar a cor da fonte do JTextField(que está no form mãe). É possível? como?

rodriguesabner

são jframes separados ou tá tudo no mesmo jframe?

CostaJava

Eu tenho só um JFrame(mãe). o outro abre por dentro(filho).

rodriguesabner

Cara, vc falar mãe e filho só da a entender que são dois. Se está no mesmo JFrame é só mudar a cor pelo nome do componente que vc quer…

jTextField1.setForeground(new Color(242, 149, 25));
CostaJava

Ok. O problema é que eu não sei como estabelecer a comunicação entre o JInternalFrame(filho) e o JFrame(mãe).

CostaJava

Estou a horas tentando algo, mais sem sucesso.

rodriguesabner

Cara, me faz um favor, vc tem duas janelas ou uma só?

Isso é um jframe com o internalframe dentro

o JInternal e o JFrame separados são duas janelas SEPARADAS

CostaJava

No JFrame(mãe) tem um JDesktopPane, ai eu chamo o JInternaloFrame dentro desse JDesktopPane.
No JInternaloFrame tem um botão, dai quero clicar nele e mudar a propriedade forecolor que está no JFrame(mãe).

rodriguesabner
seuCampo.setForeground(new Color(242, 149, 25));
CostaJava

O problema é que eu não consigo enxergar o nome do controle(variável associada a ele) dentro do JFRame(mãe).

O JTextField está no JFrame mãe, e o botão está no JInternalFrame filho.

rodriguesabner

na janela 2 vc faz:

public class SegundaJanela {

    private PrimeiraJanela parent;

    public SegundaJanela(PrimeiraJanela parent) {
        initComponents();

        this.parent = parent;
    }

...
}

//no ActionPerformed do seu botão vc coloca:
private void seuBotaoActionPerformed(java.awt.event.ActionEvent evt) {                                         
    parent.alterarCorTexto();
}

janela 1:

public void alterarCorTexto(){
    seuCampo.setForeground(new Color(231, 165, 140));
}
CostaJava

vou testar aqui…

CostaJava

No botão não estou conseguindo acessar ‘parent’, tá destacado de vermelho.

rodriguesabner

mostra como vc fez

CostaJava
private JFrmGerente parent;
        public JFrmCredencial(JFrmGerente parent) {
            initComponents();
            ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);//tirar as bordas do JInternalFrame
            this.parent = parent;
        }
//no botão
parent.alterarCorTexto();
//no form 1
public void alterarCorTexto(){
   jCkbCred.setSelected(true);
}
CostaJava

//no botão

parent.alterarCorTexto();

CostaJava
//no form 1

public void alterarCorTexto(){

jCkbCred.setSelected(true);

}
CostaJava

fiz só para testar em um componente JCheckBox

rodriguesabner

Cara, coloca tudo em um post só, não cria vários… E quando for postar código, seleciona ele todo e clica em </>

image

CostaJava

ok…Desculpa ai

rodriguesabner

esse botão está na janela 2?

CostaJava

Apareceu um erro no form 1

public void abrirJanCred() {
            JFrmCredencial cred = new JFrmCredencial();//linha do erro...toda linha ficou vermelhaTexto pré-formatado
            if (jPnlEtapas.isVisible() == false) {
                cred.setVisible(true);
                jDeskGer.add(cred);
            } else {
                JFrmTrans trans = new JFrmTrans();
                trans.setVisible(true);
                jDeskGer.add(trans);
                jCkbCred.setSelected(true);
            }
        }
CostaJava

Sim

rodriguesabner

vc tem que colocar this entre os parenteses.

CostaJava

CostaJava

esse é form mãe

rodriguesabner

Vou te mostrar um exemplo gráfico pra vc ver como funciona:

JFrame1
image

JFrame2
image

CostaJava

esse é form filho(JInternalFrame)

CostaJava

Eu quero clicar em ACESSAR e fechar o JInternalFrame e quero que depois marque um JCheckBox no JFrame mãe.

CostaJava

Se conseguir alguma coisa ai me avisa. Valeu.

staroski

Prezado, você está entendendo o que os colegas estão te ensinando ou está só copiando, colando e indo na tentativa e erro?

O seu construtor é assim:

public JFrmCredencial(JFrmGerente parent)

Como é que quer chamar ele sem parâmetro nenhum?

CostaJava

staroski, boa tarde. Vou conferir o código.

CostaJava

A variante maior penso eu é que, o botão que vai disparar o evento está no JInternaFrame(form filho).

rodriguesabner

Cara, eu pedi pra você baixar o TeamViewer via DirectMessage justamente pra te explicar melhor por aúdio, mas você não me retornou mais…


Agora o @staroski te fala uma coisa sobre o seu construtor, e vc fala isso:


Como vc quer criar um software se vc não consegue nem aplicar o que estamos passando?

Volta algumas casinhas, aprende algorítimos, aprende estrutura de linguagem, vc consegue tudo isso de forma gratuita, tem muito conteúdo bom na internet. Eu sei que é chato aprender teoria, mas se vc não consegue ser auto ditada, fazer algumas coisas olhando as imagens e entendendo os código passados, é melhor “perder” um tempo voltando, do que fazer fazer e fazer e não ter ideia do que está fazendo (e pior, não funcionar).

Criado 17 de fevereiro de 2020
Ultima resposta 23 de fev. de 2020
Respostas 40
Participantes 3