2
我将如何去写重叠for循环穿过JFrames列表迭代,并确保非是在屏幕上触摸海誓山盟?检查活跃JFrames
伪什么,我试图做的是:
for(JFrame f : frameList)
{
if(f.isTouchingOtherFramesInFrameList())
f.setLocation(shift elsewhere)
}
谢谢!
//侧面说明,我很清楚多JFrames气馁。
我将如何去写重叠for循环穿过JFrames列表迭代,并确保非是在屏幕上触摸海誓山盟?检查活跃JFrames
伪什么,我试图做的是:
for(JFrame f : frameList)
{
if(f.isTouchingOtherFramesInFrameList())
f.setLocation(shift elsewhere)
}
谢谢!
//侧面说明,我很清楚多JFrames气馁。
为了测试如果两个JFrames相互重叠,您可以使用
jframe1.getBounds().intersects(jframe2.getBounds());
找到一个新的,合适的位置是一个棘手的问题。这是不可能的,但如果可能的话,你需要一些方法来确定什么样的理想场所移动到会
可以判断两个JFrames通过检查重叠,如果它们的边界相交。下面是一个简单的例子:
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!
如何轻松地确定是否有在屏幕上自由空间将窗口移动到任何线索? –