gpt4 book ai didi

java - 使用 Swing Timer 临时隐藏通知

转载 作者:行者123 更新时间:2023-11-29 06:46:23 24 4
gpt4 key购买 nike

我正在使用 Swing Timer 使自定义 JFramewebNotification 在特定时间出现。我希望用户可以选择单击“隐藏”按钮以关闭通知并使其在一小时后返回。我怎样才能做到这一点?

最佳答案

javax.swing.Timer有一个初始延迟;只需将其设置为 60 * 60 * 1000。您的 actionPerformed() 将在调用 start() 后一个小时被调用。

附录:这是一个按钮的示例,该按钮在指定的时间段内隐藏它的封闭窗口。

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Timer;

/** @see http://stackoverflow.com/questions/4373493 */
public class TimerFrame extends JFrame {

private void display() {
this.setTitle("TimerFrame");
this.setLayout(new GridLayout(0, 1));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new TimerButton("Back in a second", 1000));
this.add(new TimerButton("Back in a minute", 60 * 1000));
this.add(new TimerButton("Back in an hour", 60 * 60 * 1000));
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}

/** A button that hides it's enclosing Window for delay ms. */
private class TimerButton extends JButton {

private final Timer timer;

public TimerButton(String text, int delay) {
super(text);
this.addActionListener(new StartListener());
timer = new Timer(delay, new StopListener());
}

private class StartListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
TimerFrame.this.setVisible(false);
timer.start();
}
}

private class StopListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
TimerFrame.this.setVisible(true);
}
}
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
new TimerFrame().display();
}
});
}
}

关于java - 使用 Swing Timer 临时隐藏通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com