package cit.PureATN.Inspector; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.util.ArrayList; import javax.swing.JFrame; public class MultiDisplay { public static ArrayList<Rectangle> getMultiDisplayRectList(){ ArrayList<Rectangle> displaySizeList = new ArrayList<Rectangle>(); GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); for(GraphicsDevice gd: devices){ // System.out.println(gd.getIDstring()); GraphicsConfiguration gc = gd.getDefaultConfiguration(); Rectangle rec = gc.getBounds(); displaySizeList.add(rec); } return displaySizeList; } /* 右なら1,下なら3 */ public static void alineWindow(JFrame base, JFrame target, int direction, boolean isresize){ int bx = base.getX(); int by = base.getY(); int bw = base.getWidth(); int bh = base.getHeight(); if (direction==1){ target.setLocation(bx+bw,by); if (isresize) target.setSize(target.getWidth(), bh); } else if (direction==3){ target.setLocation(bx,by+bh); if (isresize) target.setSize(bw, target.getHeight()); } } public static void moveWindow(JFrame base, JFrame f, boolean doMoveOnOtherDisplay, boolean fullsize){ ArrayList<Rectangle> dispList = MultiDisplay.getMultiDisplayRectList(); int findBaseWinDisplay = 0; int findTargetWinDisplay = 0; int destinationDisplay = 0; if (dispList.size()>1){ for(int i=0;i<dispList.size();i++){ if (dispList.get(i).contains(base.getLocation())){ findBaseWinDisplay = i; break; } } for(int i=0;i<dispList.size();i++){ if (dispList.get(i).contains(f.getLocation())){ findTargetWinDisplay = i; break; } } if (doMoveOnOtherDisplay) { destinationDisplay = 1-findBaseWinDisplay; } else { destinationDisplay = findBaseWinDisplay; } } if (fullsize){ f.setLocation(dispList.get(destinationDisplay).getLocation()); f.setSize(dispList.get(destinationDisplay).getSize()); } else { int owx = dispList.get(findTargetWinDisplay).getLocation().x; int owy = dispList.get(findTargetWinDisplay).getLocation().y; // int oww = dispList.get(findTargetWinDisplay).getSize().width; // int owh = dispList.get(findTargetWinDisplay).getSize().height; // int ox = f.getLocation().x; // int oy = f.getLocation().y; // int ow = f.getSize().width; // int oh = f.getSize().height; // float xposrate = ox/oww; // float yposrate = oy/owh; // float wrate = ow/oww; // float hrate = oh/owh; int dwx = dispList.get(destinationDisplay).getLocation().x; int dwy = dispList.get(destinationDisplay).getLocation().y; int dww = dispList.get(destinationDisplay).getSize().width; int dwh = dispList.get(destinationDisplay).getSize().height; // f.setLocation((int)(dwx+xposrate*dww), (int)(dwy+yposrate*dwh)); // f.setSize((int)(ow*wrate),(int)(oh*hrate)); f.setLocation((int)(owx+dwx+dww/16), (int)(owy+dwy+dwh/16)); f.setSize((int)(dww*4/5),(int)(dwh*4/5)); } } public static void changeDisplayOfWindow(JFrame base, JFrame f, boolean doMoveOnOtherDisplay){ ArrayList<Rectangle> dispList = MultiDisplay.getMultiDisplayRectList(); int findBaseWinDisplay = 0; int destinationDisplay = 0; if (dispList.size()>1){ for(int i=0;i<dispList.size();i++){ if (dispList.get(i).contains(base.getLocation())){ findBaseWinDisplay = i; break; } } if (doMoveOnOtherDisplay) { destinationDisplay = 1-findBaseWinDisplay; } else { destinationDisplay = findBaseWinDisplay; } } int x = dispList.get(destinationDisplay).getLocation().x; int y = dispList.get(destinationDisplay).getLocation().y; int w = dispList.get(destinationDisplay).getSize().width; int h = dispList.get(destinationDisplay).getSize().height; f.setLocation(x+w/5, y+h/5); f.setSize(w/2,h/2); } }