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.
Related
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();
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
}
Java: how to open one Jframe from another Jframe which is not in the same file but in the same package; For eg: project package is test1 and it has 2 Jframes ( home1 and home2 ) Need to open that second frame from the first one (home2 from home1) while clicking on a JButton called 'NEXT'.
can anyone help..
So your problem is to open a new frame from a departure frame ? It's simple you just need to instanciate a new frame object like in the following :
JFrame home2 = new Home2(); // don't forget the import since it's a custom made Frame ;)
home2.setVisible(true);
Now you want that to be done when you click on a JButton. To do so you need to add an ActionListener, using an anonyous class, to the JButton with the previous code.
jb.addActionListener(new ActionListener() {
#Override
public void actionPerformed(ActionEvent ae) {
//stuff
}
});
See the addActionListener() method of JButton and the ActionListener.
You can show the other JFrame simply by calling
home2 h2 = new home2();
h2.setVisible(true);
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.
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);