如何在jfc中模拟jdialog运动

w8biq8rn  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(302)

我有一个 JDialog 显示在屏幕上,我想根据条件模拟它的移动(从一个位置拖动到另一个位置)。有什么办法可以做到吗?

xbp102n0

xbp102n01#

请参阅下面的这段代码。我刚刚测试过,效果很好。这只是一个概念的证明。

private void startDialog() {
  final JDialog d = new JDialog(this, "Test", true);
  d.getContentPane().add(new JLabel("Something"));
  d.setBounds(100, 100, 400, 300);
  Thread t = new Thread(new Runnable() {
    public void run() {
      for (int i = 0; i < 50; i++) {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            Point p = d.getLocation();
            d.setLocation(p.x + 10, p.y + 10);
          }
        });
        try {
          Thread.sleep(100);
        } catch (InterruptedException e) {
          // ignore
        }
      }
    }
  });
  t.start();
  d.setVisible(true);
}

您可以自己改进代码:
使用 Timer 而不是普通的 Thread 调整睡眠时间和位置跳跃等等
只要从任何swing应用程序调用这个方法,它就会工作。

相关问题