java - 检查 Activity JFrame 中的重叠

标签 java swing

我将如何编写一个 for 循环来迭代 JFrame 列表,并确保没有在屏幕上相互接触?

我想做的伪代码是:

for(JFrame f : frameList)
{
if(f.isTouchingOtherFramesInFrameList())
f.setLocation(shift elsewhere)
}

谢谢!

//旁注,我很清楚不鼓励使用多个 JFrame。

最佳答案

您可以通过检查两个 JFrame 的边界是否相交来确定它们是否重叠。这是一个简短的示例:

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

public class Example {

    public static void main(final String[] args) {

        JFrame jFrame1 = new JFrame();
        jFrame1.setMinimumSize(new Dimension(200, 200));
        jFrame1.setBounds(0, 0, 200, 200);
        jFrame1.setTitle("JFrame 1");
        jFrame1.setVisible(true);

        JFrame jFrame2 = new JFrame();
        jFrame2.setMinimumSize(new Dimension(200, 200));
        jFrame2.setBounds(100, 100, 200, 200);
        jFrame2.setTitle("JFrame 2");
        jFrame2.setVisible(true);

        JFrame jFrame3 = new JFrame();
        jFrame3.setMinimumSize(new Dimension(200, 200));
        jFrame3.setBounds(400, 400, 200, 200);
        jFrame3.setTitle("JFrame 3");
        jFrame3.setVisible(true);

        List<JFrame> jFrames = new ArrayList<>(3);
        jFrames.add(jFrame1);
        jFrames.add(jFrame2);
        jFrames.add(jFrame3);

        for(int i = 0; i < jFrames.size(); i ++) {
            for(int j = 0; j < jFrames.size(); j ++) {
                if(i != j && jFrames.get(i).getBounds().intersects(jFrames.get(j).getBounds())) {
                    System.out.println(jFrames.get(i).getTitle() + " overlaps!");
                }
            }
        }
    }
}

输出:

JFrame 1 overlaps!
JFrame 2 overlaps!

关于java - 检查 Activity JFrame 中的重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37728789/

相关文章:

java(1150,0x10df2d000) malloc : *** error for object 0x10df9b020: pointer being freed was not allocated

java - 如何使用 java 从 SOAPUI 测试用例中删除自定义属性?

java - 第一个 GUI,应用程序组织

java - 现在在表中的位置并打开 jpanel

java - 如何限制未登录用户访问某些页面? (JSF 2.0)

java - 为什么双向 ManyToOne 会导致 Hibernate 中的循环依赖?

java - 如何设计 Java 依赖项版本控制

java - 如何在框架中显示图像?

java - iText 选择保存 PDF 的路径

java - 从不同的类获取数据而不用在java中重新打开JFrame?