Java - Show a minimized JFrame window

前端 未结 2 2005
我在风中等你
我在风中等你 2021-01-12 21:17

If a JFrame window is minimized, is there any way to bring it back to focus?

I am trying to get it to click a certain point, then restore it.

                


        
相关标签:
2条回答
  • 2021-01-12 21:45

    You can set the state to normal:

    frame.setState(NORMAL);
    

    Full example:

    public class FrameTest extends JFrame {
    
        public FrameTest() {
            final JFrame miniFrame = new JFrame();
            final JButton miniButton = new JButton(
              new AbstractAction("Minimize me") {
                public void actionPerformed(ActionEvent e) {
                    miniFrame.setState(ICONIFIED);
                }
            }); 
    
            miniFrame.add(miniButton);
            miniFrame.pack();
            miniFrame.setVisible(true);
    
            add(new JButton(new AbstractAction("Open") {
                public void actionPerformed(ActionEvent e) {
                    miniFrame.setState(NORMAL);
                    miniFrame.toFront();
                    miniButton.requestFocusInWindow();
                }
            }));
    
            pack();
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setVisible(true);
        }
    
        public static void main(String[] args) {
            new FrameTest();
        }
    
    }
    
    0 讨论(0)
  • 2021-01-12 21:53

    If you want to bring it back from being iconified, you can just set its state to normal:

    JFrame frame = new JFrame(...);
    // Show the frame
    frame.setVisible(true);
    
    // Sleep for 5 seconds, then minimize
    Thread.sleep(5000);
    frame.setState(java.awt.Frame.ICONIFIED);
    
    // Sleep for 5 seconds, then restore
    Thread.sleep(5000);
    frame.setState(java.awt.Frame.NORMAL);
    

    Example from here.

    There are also WindowEvents that are triggered whenever the state is changed and a WindowListener interface that handles these triggers.In this case, you might use:

    public class YourClass implements WindowListener {
      ...
      public void windowDeiconified(WindowEvent e) {
        // Do something when the window is restored
      }
    }
    

    If you are wanting to check another program's state change, there isn't a "pure Java" solution, but just requires getting the window's ID.

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