Como fazer JFrame aceder a objecto de outra JFrame

4 respostas
F

Boas,

Tenho um Frame (Frame 1) com diversos botões e uma listbox.

Um dos botões abre um novo JFrame (Frame 2) com uma textbox para o utilizador introduzir uma palavra entre outras coisas.

Como é que consigo inserir a palavra inserida pelo utilizador no Frame 2 na listbox existente no Frame 1?

Na Frame 2 não consigo fazer o listbox.setItem(value). Tentei criar um metodo public na Frame 1 que apenas faz listbox.setItem(receivedvalue), mas não resolveu o problema porque na Frame 2 não tenho acesso a este método. Se definir esse metodo como static consigo aceder a ele a partir da Frame 2 mas diz que estou a tentar aceder a uma variavel (a listbox) dentro de um método static…

Como é que posso resolver a situação?

Obrigado

4 Respostas

ramilani12

Vc deverá passar a intancia da Frame 1 -> Frame2
Alias seus componentes deverão estar publicos se forem privados deve usar o get() , para recuperar o componente
Frame 1

Frame2 f2 = new Frame2(Frame f1);

Frame2

private Frame f1;

Frame2(Frame f1)
{
   this.f1 = f1;
}

f1.textFieldB.getText();
F
ramilani12:
Vc deverá passar a intancia da Frame 1 -> Frame2 Alias seus componentes deverão estar publicos se forem privados deve usar o get() , para recuperar o componente Frame 1
Frame2 f2 = new Frame2(Frame f1);
Frame2
private Frame f1;

Frame2(Frame f1)
{
   this.f1 = f1;
}

f1.textFieldB.getText();

-------------------------

Já tentei e não dá. Vou tentar explicar melhor.

Na Frame1 tenho uma ListBox1 com vários valores e um método:

public void createListBox1Entry(String entry){
ListBox1.addItem(entry); //adiciona o valor recebido aos valores já existentes na listbox1
}

Ao se carregar num botão existente na Frame1 (buttonOpenFrame2) crio a Frame2 assim:

private void buttonOpenFrame2(java.awt.event.ActionEvent evt) {
CreateNewFrame2 f2 = new CreateNewRunFrame(this);
}

O construtor existente na Frame2 é o seguinte:

private JFrame frm1;

public CreateNewRunFrame(JFrame f1) {
this.frm1 = f1;
initComponents();
setVisible(true);
}

O utilizador insere um texto na textbox2 (existente na Frame2) e carrega num botão "Apply". É assim chamado o método do botão:

private void jButtonApply2(java.awt.event.ActionEvent evt) {
String str;
str = jTextbox2.getText();

//É nesta parte, antes da Frame2 fechar, que quero inserir o valor existente em str na ListBox1 existente na Frame1. Não tenho acesso a frm1.createListBox1Entry. Não tenho acesso a this.frm1.createListBox1Entry. Não tenho acesso a frm1.ListBox1.addItem(). Como é que consigo passar o valor inserido na Frame2 para dentro da listbox existente na Frame1 antes da Frame2 fazer o Dispose();?

dispose();
}

E obrigado pela resposta :wink:

ramilani12

Prq vc nao retorna o ListBox ?,p/ Frame 2....

public ListBox createListBox1Entry(String entry){
        ListBox1.addItem(entry); //adiciona o valor recebido aos valores já existentes na listbox1
    
return ListBox1;
}
ffar:
ramilani12:
Vc deverá passar a intancia da Frame 1 -> Frame2 Alias seus componentes deverão estar publicos se forem privados deve usar o get() , para recuperar o componente Frame 1
Frame2 f2 = new Frame2(Frame f1);
Frame2
private Frame f1;

Frame2(Frame f1)
{
   this.f1 = f1;
}

f1.textFieldB.getText();

-------------------------

Já tentei e não dá. Vou tentar explicar melhor.

Na Frame1 tenho uma ListBox1 com vários valores e um método:

public void createListBox1Entry(String entry){
ListBox1.addItem(entry); //adiciona o valor recebido aos valores já existentes na listbox1
}

Ao se carregar num botão existente na Frame1 (buttonOpenFrame2) crio a Frame2 assim:

private void buttonOpenFrame2(java.awt.event.ActionEvent evt) {
CreateNewFrame2 f2 = new CreateNewRunFrame(this);
}

O construtor existente na Frame2 é o seguinte:

private JFrame frm1;

public CreateNewRunFrame(JFrame f1) {
this.frm1 = f1;
initComponents();
setVisible(true);
}

O utilizador insere um texto na textbox2 (existente na Frame2) e carrega num botão "Apply". É assim chamado o método do botão:

private void jButtonApply2(java.awt.event.ActionEvent evt) {
String str;
str = jTextbox2.getText();

//É nesta parte, antes da Frame2 fechar, que quero inserir o valor existente em str na ListBox1 existente na Frame1. Não tenho acesso a frm1.createListBox1Entry. Não tenho acesso a this.frm1.createListBox1Entry. Não tenho acesso a frm1.ListBox1.addItem(). Como é que consigo passar o valor inserido na Frame2 para dentro da listbox existente na Frame1 antes da Frame2 fazer o Dispose();?

dispose();
}

E obrigado pela resposta :wink:

F

Já resolvi. Obrigado.

Criado 12 de junho de 2006
Ultima resposta 13 de jun. de 2006
Respostas 4
Participantes 2