• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nakuro

manipulação de janelas

5 mensagens neste tópico

Boas

Tenho o seguinte problema tenho duas janelas:

janela1mm8.jpg

Esta e a principal, quando clico no + aparece uma nova esta:

janela2vs3.jpg

Eu quero receber os dados deste segundo janela e envia-los para a primeira de modo a coloca-los na lista, so que não tou a fazer ideia como :thumbsup:

Outra coisa como faço para quando abrir a segunda janela não deixar o utilizador interagir com a classe invocadora?

cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A forma mais fácil e mais simples será a classe que representa a primeira janela possuir um método público que receba os dados que queres enviar. A segunda janela terá uma referência para a primeira e acede ao método passando os dados.

Quanto à segunda pergunta, não percebi bem, mas penso que o que queres é impedir que, quando a segunda janela estiver activa, não seja possível ao utilizador interagir com a janela que se encontra atrás, para isso basta que digas que a segunda janela é modal e que o dono é a primeira janela... confuso? Bem era melhor se, em vez de janelas, eu soubesse que classe estás a usar, como não sei, vou assumir que a primeira janela é uma JFrame, nesse caso a segunda janela deveria ser uma JDialog, mas mesmo que não seja. Mesmo que não seja uma JDialog e seja também uma JFrame, possuís construtores que te permitem passar um owner e definir a janela como modal. Podes também usar os métodos setOwner() e setModal()

Espero não ter confundido muito :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem ja consegui fazer o que queria, ja agora deixo aqui o codigo para consultas futuras:

A classe principal alem dos metodos habituais tem mais estes:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
      
        JframeDVD fdvd= new JframeDVD  (this);
        fdvd.setVisible(true);
     
        
    }                                        
    public javax.swing.JList getlist() // retorna a list desta frame
    {
        return this.jList1;
    }

a frame evocada tem de ter:

 public JframeDVD(Jframeprincipal frame){ // recebe a frame principal por parametro
        j=frame;
        initComponents();
        this.setModal(true);
        
    }
private void jButtoninserirActionPerformed(java.awt.event.ActionEvent evt) {                                               
// TODO add your handling code here:
        vec=new Vector<DVD>();
       
        String titulo=null, n_realizador=null,total=null,comentario=null;
        
          
            
                 titulo= this.jTextFieldtituloDVD.getText();
                 if (titulo.length()==0)
                 {
                      JframeError erro= new JframeError("ERRO"); // uma janela que criei so para dar uma mensagem de erro
                      erro.setVisible(true);
                      this.dispose();
                 }
                 n_realizador= this.jTextFieldnomerealizadorDVD.getText();
                 total=this.jTextFieldtotaldvd.getText();
                 comentario= this.jTextAreacomentariodvd.getText();
                 dvd=new DVD(titulo, n_realizador);
                 int tt= Integer.parseInt(total);
                 dvd.set_tempo_total(tt);
                 dvd.set_comentario(comentario);
       
        
              int cond=titulo.length();
             int cond2=n_realizador.length();
             int cond3=total.length();
             int cond4=comentario.length();
            if (cond>0 && cond2>0 && cond3>0 && cond4>0){
        
          
           vec.add(dvd);
           j.getlist().setListData(vec);
           
           this.dispose();
        }
        else{
           this.dispose();
       }

Ja agora aproveito para deixar uma duvida, como faço para receber o que esta dentro da jlist?

Porque sempre que eu insiro algo novo o programa apaga o que la esta e coloca o novo conteudo, sei que tenho de ir "buscar" o que esta dentro da list e depois acrescentar atraves de vectores so que não tenho conseguido, tentei usar o metodo components() mas não consegui da-me erro.

A outra questão que gostava de colocar e como faço para o utilizador clicar num item de uma jlist e automaticamente na caixa de detalhes da janela acima aparecer o metodo toString do objecto selecionado.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o código que tens é preciso algum malabarismo...

Para o utilizador clicar num item de uma JList e aparecer na nova janela os detalhes terás de implementar um actionlistener para a JList

Quanto a obteres os objectos, quase todos os componentes Swing funcionam com modelos e renderes, isto é, são compostos por, pelo menos, mais dois objectos, um responsável por manter os dados, outro responsável por saber como os dados se mostram, neste caso e ir directo ao assunto podes aceder aos elementos através do método jlist.getModel().getElementAt(); poderá existir outro método mas só me lembro desse.

O método components(), serve para teres acesso a outros componentes, neste caso não serve para o que queres e dificilmente terás de aceder a esse método, seja da JList seja de outro componente Swing qualquer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque sempre que eu insiro algo novo o programa apaga o que la esta e coloca o novo conteudo(...)

Isso acontece porque no método jButtoninserirActionPerformed você atribui um novo Vector ao vec. Crie e inicie o vec fora desse método.

Adding Items to and Removing Items from a List (How to Use Lists)

Advanced JList Programming

A outra questão que gostava de colocar e como faço para o utilizador clicar num item de uma jlist e automaticamente na caixa de detalhes da janela acima aparecer o metodo toString do objecto selecionado.

How to Write a List Selection Listener

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora