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