有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在JFC中模拟JDialog运动

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


共 (1) 个答案

  1. # 1 楼答案

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

    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应用程序调用这个方法,它就会工作