java - 实时显示 JFrame 的变化

标签 java swing jframe mouseevent

所以我想要完成的是创建两个 JFrame。一个将覆盖整个屏幕,当用户单击该屏幕时,当用户单击并拖动鼠标时,会显示一个新的 JFrame。用户第一次单击的位置是新 JFrame 的左上角,用户释放鼠标的位置是 JFrame 的右下角。当单击并释放鼠标时,制作两个 JFrame 并显示第二个 JFrame 没有问题。问题是什么,我希望新的 JFrame 在用户移动鼠标时(在释放鼠标之前)实时显示。我试过了

public void mouseDragged(MouseEvent e) {

            FrontWindow f = new FrontWindow();

            while (true) {          
                f.setBounds(Shared.xPressed, Shared.yPressed, (Utils.getXPosition() - Shared.xPressed) , (Utils.getYPosition() - Shared.yPressed));
                f.setVisible(true);
            }

        }

但这并没有奏效。

最佳答案

不需要 while 循环。将生成多个 mouseDragged() 事件。

您应该在 mousePressed() 事件上创建新框架。然后,当生成每个 mouseDragged() 事件时,您可以更改框架的大小。

当然,这看起来不太好,因为拖动不会与框架的大小同步。更好的方法是在移动鼠标时绘制一个矩形。然后在 mouseReleased 上创建并以绘制的矩形的大小显示框架。

参见Custom Paint Approaches了解使用鼠标绘制矩形的基础知识。在您的情况下,您可能希望使用玻璃 Pane 来处理鼠标事件和矩形的绘制。

关于java - 实时显示 JFrame 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287581/

相关文章:

java - 将 int 转换为 String,然后使用 XOR 对其进行加密

java - JFrame : 'Random' size?

java - WPF客户端和Java服务器端?

java - 这是怎么回事?无法设置我的 JLabel 的位置

java - 如何在应用程序退出之前使文本字段失去焦点?

Java MYSQL 空指针异常

java - 使用 Hibernate/JPA 将 UUID 以二进制形式存储在 Mysql 数据库中以提高性能

Java 参数传递

java - 具有可扩展单元格的动态布局

java - 通过单击其他 JFrame 中的按钮刷新 JFrame 中的 JTable