Java swing application, close one window and open another when button is clicked

前端 未结 7 1920
离开以前
离开以前 2020-12-03 07:56

I have a netbeans Java application that should display a JFrame (class StartUpWindow extends JFrame) with some options when the application is launched, then the user clicks

相关标签:
7条回答
  • 2020-12-03 08:23

    You can call dispose() on the current window and setVisible(true) on the one you want to display.

    0 讨论(0)
  • 2020-12-03 08:24

    Use this.dispose for current window to close and next_window.setVisible(true) to show next window behind button property ActionPerformed , Example is shown below in pic for your help.

    0 讨论(0)
  • 2020-12-03 08:24

    Call below method just after calling the method for opening new window, this will close the current window.

    private void close(){
        WindowEvent windowEventClosing = new WindowEvent(this, WindowEvent.WINDOW_CLOSING);
        Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(windowEventClosing);
    }
    

    Also in properties of JFrame, make sure defaultCloseOperation is set as DISPOSE.

    0 讨论(0)
  • 2020-12-03 08:39

    You can hide a part of JFrame that contains the swing controls which you want on another JFrame.

    When the user clicks on a Jbutton the JFrame width increases and when he clicks on another same kind of Jbutton the JFrame comes to the default size.

      JFrame myFrame = new JFrame("");
      JButton button1 = new JButton("Basic");
      JButton button2 = new JButton("More options");
     // actionPerformed block code for button1 (Default size)  
     myFrame.setSize(400, 400);
    //  actionPerformed block code for button2 (Increase width)
     myFrame.setSize(600, 400);
    
    0 讨论(0)
  • 2020-12-03 08:45

    Here is an example:

    enter image description here

    enter image description here

    StartupWindow.java

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    
    
    public class StartupWindow extends JFrame implements ActionListener
    {
        private JButton btn;
    
        public StartupWindow()
        {
            super("Simple GUI");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            btn = new JButton("Open the other JFrame!");
            btn.addActionListener(this);
            btn.setActionCommand("Open");
            add(btn);
            pack();
    
        }
    
        @Override
        public void actionPerformed(ActionEvent e)
        {
            String cmd = e.getActionCommand();
    
            if(cmd.equals("Open"))
            {
                dispose();
                new AnotherJFrame();
            }
        }
    
        public static void main(String[] args)
        {
            SwingUtilities.invokeLater(new Runnable(){
    
                @Override
                public void run()
                {
                    new StartupWindow().setVisible(true);
                }
    
            });
        }
    }
    

    AnotherJFrame.java

    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class AnotherJFrame extends JFrame
    {
        public AnotherJFrame()
        {
            super("Another GUI");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            add(new JLabel("Empty JFrame"));
            pack();
            setVisible(true);
        }
    }
    
    0 讨论(0)
  • 2020-12-03 08:45
            final File open = new File("PicDic.exe");
            if (open.exists() == true) {
                if (Desktop.isDesktopSupported()) {
                    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    
                        public void run() {
                            try {
                                Desktop.getDesktop().open(open);
                            } catch (IOException ex) {
                                return;
                            }
                        }
                    });
    
                    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    
                        public void run() {
                            //DocumentEditorView.this.getFrame().dispose();
                            System.exit(0);
                        }
    
                    });
                } else {
                    JOptionPane.showMessageDialog(this.getFrame(), "Desktop is not support to open editor\n You should try manualy");
                }
            } else {
                JOptionPane.showMessageDialog(this.getFrame(), "PicDic.exe is not found");
            }
    

    //you can start another apps by using it and can slit your whole project in many apps. it will work lot

    0 讨论(0)
提交回复
热议问题