当 JFrame 最小化时 setState(JFrame.ICONIFIED) 但是当用户从任务栏恢复事件代码时写入事件代码的位置

when a JFrame is minimized setState(JFrame.ICONIFIED) but where to write to code of event when user restores it from taskbar

当用户单击最小化时,我的程序最小化了两个框架,它们在任务栏中的显示方式不同,但我希望当用户在任务栏中单击其中一个时,它们都可以恢复以在屏幕上查看。

两个 JFrame 处于 Frame.ICONIFIED 状态(最小化)- 当其中一个恢复到 Frame.NORMAL 状态时,另一个也进入正常状态。这是通过为两个帧实现 java.awt.event.WindowStateListener 来实现的。这是演示程序:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TwoJframes implements WindowStateListener {
    private JFrame frame;
    private JFrame frame2;
    public static void main(String [] args) {
        new TwoJframes().gui();
    }
    private void gui() {
        frame = new JFrame();
        frame.setTitle("JFrame 1");
        JButton button = new JButton("Show Frame 2");
        button.addActionListener(e -> showAnotherFrame());
        frame.addWindowStateListener(this);
        frame.add(button);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setSize(250, 100);        
        frame.setVisible(true);
    }
    private void showAnotherFrame() {
        frame2 = new JFrame();
        frame2.setTitle("JFrame 2");
        frame2.addWindowStateListener(this);
        frame2.add(new JLabel("2nd frame"));
        frame2.setSize(250, 100);
        frame2.setLocation(300, 300);
        frame2.setVisible(true);
    }
    // This is the WindowStateListener's implementation method
    @Override public void windowStateChanged(WindowEvent e) {
        JFrame f = (JFrame) e.getSource();
        if (f == frame) {
            if ((frame.getExtendedState() == Frame.NORMAL) && 
                    (frame2.getExtendedState() == Frame.ICONIFIED)) {
                frame2.setExtendedState(Frame.NORMAL);
            }
        }
        if (f == frame2) {
            if ((frame2.getExtendedState() == Frame.NORMAL) && 
                    (frame.getExtendedState() == Frame.ICONIFIED)) {
                frame.setExtendedState(Frame.NORMAL);
            }
        }
    }
}