swing Java如何在Jframe中自动移动窗口
我的程序有一个小问题:我想及时得到自动移动的窗口 我有一个密码:
package simpleFrame;
import java.awt.*;
import java.util.TimerTask;
import javax.swing.*;
public class Trololo
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new SizedFrame();
frame.setUndecorated(false);
frame.setTitle("SizedFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println("About to schedule task.");
new ReminderBeep(5);
System.out.println("Task scheduled.");
}
});
}
}
class SizedFrame extends JFrame
{
public SizedFrame()
{
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
setSize(screenWidth / 2, screenHeight / 2);
setBounds(500,500,screenWidth/2,screenHeight/2);
}
}
class ReminderBeep {
Toolkit toolkit;
java.util.Timer timer;
public ReminderBeep(int seconds) {
toolkit = Toolkit.getDefaultToolkit();
timer = new java.util.Timer();
timer.schedule(new RemindTask(), seconds * 1000);
}
class RemindTask extends TimerTask {
SizedFrame window = new SizedFrame();
public void run() {
window.setBounds(900,900,500,600);
toolkit.beep();
System.out.println("ok");
}
}}
我有一个计时器可以工作:它在命令提示符下显示“ok”,但窗口不动:/How to get works
# 1 楼答案
在main()方法中,创建一个SizedFrame并显示它。然后启动计时器
当计时器启动时,创建另一个SizedFrame,但不显示它。然后在未显示的SizedFrame上设置边界。您没有调整正在显示的SizedFrame的大小
# 2 楼答案
你必须更新你的表单(panem/frame),方法是刷新tem^late,把它拉回来(重新验证),然后像这样它会移动