How do I get rid of the JFrame within another frame? - java

I will try to be really specific with my question.So I have an application in a JFrame which contains 3 buttons and each of them open another JFrame and they are doing some animation inside.So what i have to do is close just one frame but not the main frame with it.And in this 3 frames there is SwingWorker who is processing some data,so when I close specific frame I want this application to stop and not doing in a background.

You can add an actionListerner on the click of the button..Once the button is clicked you set the visibility of a specific frame to false the user the dispose function on that specific frame and cancel its background activities
like below
cancelbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame1.setVisible(false);
frame1.dispose();

Related

Trying to implement back feature into my jframe using a button [duplicate]

I have designed two JFrames in NetBeans.
When I click the "rules" button (i.e placed on JFrame1) then it opens a second JFrame (but JFrame2 opens over JFrame1's window, that's what I dont want).
In the second JFrame there is a "close" button. But when I click this button, I want JFrame1 to be opened and it is working too, but JFrame2 is actually not closed and JFrame1 is appearing over JFrame2.
In short the main form is JFrame1. When I click the "rules" button from JFrame1 it opens JFrame2 over JFrame1, and in JFrame2 there is a "close" button when it gets clicked the main form (i.e JFrame1) is lauched but it is launched over JFrame2.
The scenerio is JFframe1 -> JFrame2 -> JFrame1
Now my question is after clicking the "rules" button, JFrame1 should be closed and JFrame2 displayed on the screen and vice versa.
Assuming your button has an actionListener, after clicking the "rules button" put in:
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
And then reverese them for the opposite reaction
Somethig like this should be on the constructor or method which create JFrame2:
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//call another method in the same class which will close this Jframe
CloseFrame();
}
});
It's method which should close JFrame2
public void CloseFrame(){
super.dispose();
}
Well, if you already have a actionListener, you should add this:
JFrame1.dispose(); // This will close the frame
The JFrame1 is the name of your frame.
And if you want to open another frame that you have, add this:
JFrame2.setVisible(true); // This will put the other frame visible
I'm not an expert by any means, however, I ran into this problem as well. If you set your second JFrame to hidden, when you hit "Cancel", it will close the second JFrame.
//this is the code for the "cancel" button action listener
public void actionPerformed(ActionEvent e) {
setVisible(false);//hides the second JFrame and returns to the primary
this worked for me (Frame1 Called RegScreen and Frame2 Called MainScreen):
RegScreen.this.setVisible(false);
new MainScreen().setVisible(true);
Hope that this helps :) Regscreen was the original frame open at startup.
If this doesn't work, try this
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
Have a MainClass with a main() method.
Have the MainClass that has the main() method encapsulate your JFrame1 and JFrame2 reference variables. Don't have JFrame1 or JFrame2 contain main() unless you have a specific reason.
After something is clicked in one of the JFrame objects, instantiate/make visible the other JFrame object and dispose of itself via your MainProgram.JFrame object methods.
Example:
//btn event inside 1st JFrame/window
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
MainProgram.openResultsForm(); //MainProgram opens 2nd window
MainProgram.queryEntryForm.dispose(); //MainProgam closes this,
//the 1st window
}

recreate JinternalFrame object after dispose() call

Situation: there is Supplier_JinternalFrame in JDesktopPane. A Supplier_button is available for call SetVisible(true) in JDesktopPane to show the Supplier frame. but when i close the Supplier Frame through Dispose(); its hide and never see again after click button again.
there is and option to use setshow(); and setHide() instead of setDispose(). but i want to recreate Jinternalframe instead of previous form. here is my Supplier_button code for call the Supplier_JInternalFrame Object.
private void Suppliers_ButtonActionPerformed(java.awt.event.ActionEvent evt) {
Suppliers_JinternalFrame.setVisible(true);//call the object of frame to show the frame
}
and in Suppliers_JinternalFrame Close button code
private void Close_SupMangActionPerformed(java.awt.event.ActionEvent evt) {
Suppliers.dispose();//To close the frame
}
after click supplier_Button again. it never show frame again.
Any Idea, what should i do to recall the InternalFrame . Is there Any WindowEvents, i suggestest to create ?
When dispose is called, the JInternalFrame is made invisible, it is also removed from the JDesktopPane (think desktopPane.remove(...))
This means that making the frame visible again has no (visible) effect. You need to add the frame back onto the JDesktopPane

How to make a JFrame button open another JFrame class in Netbeans?

I have a JFrame class and it was made in the design section on Netbeans. I am trying to make a log in button that takes closes the current frame and opens another, is there anyway I can do that?
I have tried:
JFrame frame = new JFrame();
But I want it to be editable in the design section!
Double Click the Login Button in the NETBEANS or add the Event Listener on Click Event (ActionListener)
btnLogin.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
this.setVisible(false);
new FrmMain().setVisible(true); // Main Form to show after the Login Form..
}
});
new SecondForm().setVisible(true);
You can either use setVisible(false) or dispose() method to disappear current form.
This link works with me: video
The answer posted before didn't work for me until the second click
So what I did is Directly call:
new NewForm().setVisible(true);
this.dispose();//to close the current jframe
JFrame.setVisible(true);
You can either use setVisible(false) or dispose() method to disappear current form.

How to close a frame on action event of a button from a different class?

I have a designed a control-frame on 1 class which has jbutton components, I have coded like on action event of these components diff-diff frame get initialized.
For each frame there is a class. now when I press second jbutton from control-frame then have to close the frame (which has opened when I pressed first jbutton from control-frame).
Just keep track of frame instance as instance variable in main class. Then close that instance on clicking close button.
public void open(ActionEvent e) {
frame = new something.. // your frame
}
public void close(ActionEvent e) {
frame.dispose();
}
Note:
JFrame frame is global variable.
write this in your button click linstener
yourFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

How to destroy the previous frame open opening a new frame

I am building an application in java that has 2 JFrames. 1st frame has a button that upon clicking should open the next JFrame while the previous one should close. I know how to display the next frame but:
How do I close the previous JFrame automatically when the next JFrame opens ?
I tried thie following code:
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new GUI();//next frame
this.dispose();//compile-time-error
}
Where you call this.dispose(), the object referred by this is an instance of ActionListener. To invoke the instance of GUI type GUI.this.dispose() instead.

Categories