Hi All,

I am working with Internal Frames. I used JDesktopPane and added 2 frames to it. I made one frame visible and the other was setVisible(false). This happens when I first run the program(Only first frame appearing). Now, what I want is to make the second frame visible, when I click a button on the first frame. Can you please help me out.

Thank you

Hi All,

I am working with Internal Frames. I used JDesktopPane and added 2 frames to it. I made one frame visible and the other was setVisible(false). This happens when I first run the program(Only first frame appearing). Now, what I want is to make the second frame visible, when I click a button on the first frame. Can you please help me out.

Thank you

u just add it to container of(ie,desktop pane) main frame ie;window of ur app and make it setVisible(true)
so
wer u r buton is now in main frame or in first internal frame?
if it's in main frame
i think cod will be like this
********************************************
JFrame a= new JFrame("Main Window");
JInternalFrame f1 = new JInternalFrame();
JInternalFrame f2 = new JInternalFrame();
a.setContentPane(desktopPane);
Container c = getContentPane();
now
c.add(f1);
c.add(f2);
c.add(btn)
now add actionlistener for btn
f1.setVisible(true);
f2.setVisible(false);
now in action performed of btn
add

f2.setVisible(true);
************************************
if btn in first frame the whole thing will change
please sepecify that also
if u want pls snd mails to jijoy18@yahoo.com
pls feel free to ask qstns.

Hi tigerXX

Thanks for the reply. As you mentioned, the button is in the 1st Internal frame and there comes the problem for me.

then u should be adding the button to the container of the 1st internal frame
and in the actionperfromed of the button please add the code i
specified.

So long as you have an instance of the second internal frame in the class with the listeners it shouldn't be that hard. If worste comes to worste make the instance of the second internal frame static.
Also could you post some of your code, or explain why you're having such a hard time with this problem.

hi mmr

i have a piece of code for u

/************************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Test extends JFrame implements ActionListener {

JInternalFrame f1 = new JInternalFrame("Frame1");
JInternalFrame f2 = new JInternalFrame("Frame2");
Container cont;
JButton jBtn  = new JButton("Click");
    public Test(){
        cont = this.getContentPane();
        cont.setLayout(new FlowLayout());
        cont.add(f1);
        cont.add(f2);
        Container co = f1.getContentPane();
        co.setLayout(new FlowLayout());
        co.add(jBtn);
        f1.setVisible(true);
        f1.setBounds(0,0,100,100);
        f2.setVisible(false);
        f2.setBounds(100,100,50,50);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setBounds(0,0,400,400);
        setVisible(true);
        jBtn.addActionListener(this);
    }
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource()==jBtn){
            cont.add(f2);
            f2.setVisible(true);
            cont.add(new JLabel("Second Frame is Visible NOW"));
        }
    }
    public static void main(String args[]){
        new Test();
    }


}
/***************************************************/

try this code and send me reply
i think this is ur requirement
if not plz be more specific
best luck
plz be feel free to ask qstns
bye

Edited 3 Years Ago by Dani: Formatting fixed

Hi tigerXX

Thanks for the reply. That works. I used desktop pane and added 2 internal frames to it. But now I understood. Thank you.

Hi tigerXX

Thanks for the reply. That works. I used desktop pane and added 2 internal frames to it. But now I understood. Thank you.

Hi TigerXX,

But what happens if we use desktop pane??? How should we manage?

Hi TigerXX,

But what happens if we use desktop pane??? How should we manage?

u can use it bye

set
this.setContentPane(new JDesktopPane());
remaining everything as i have mentioned like above
thnkx............

This article has been dead for over six months. Start a new discussion instead.