< prev index next >
test/java/awt/Choice/ChoicePopupLocation/ChoicePopupLocation.java
Print this page
@@ -40,21 +40,27 @@
* @run main/timeout=300 ChoicePopupLocation
*/
public final class ChoicePopupLocation {
private static final int SIZE = 350;
+ private static int frameWidth;
public static void main(final String[] args) throws Exception {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] sds = ge.getScreenDevices();
Point left = null;
+ Point right = null;
for (GraphicsDevice sd : sds) {
GraphicsConfiguration gc = sd.getDefaultConfiguration();
Rectangle bounds = gc.getBounds();
if (left == null || left.x > bounds.x) {
left = new Point(bounds.x, bounds.y + bounds.height / 2);
}
+ if (right == null || right.x < bounds.x + bounds.width) {
+ right = new Point(bounds.x + bounds.width,
+ bounds.y + bounds.height / 2);
+ }
Point point = new Point(bounds.x, bounds.y);
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
while (point.y < bounds.y + bounds.height - insets.bottom - SIZE ) {
while (point.x < bounds.x + bounds.width - insets.right - SIZE) {
@@ -67,10 +73,14 @@
}
if (left != null) {
left.translate(-50, 0);
test(left);
}
+ if (right != null) {
+ right.translate(-frameWidth + 50, 0);
+ test(right);
+ }
}
private static void test(final Point tmp) throws Exception {
Choice choice = new Choice();
for (int i = 1; i < 7; i++) {
@@ -80,11 +90,12 @@
try {
frame.setAlwaysOnTop(true);
frame.setLayout(new FlowLayout());
frame.add(choice);
frame.pack();
- frame.setSize(frame.getWidth(), SIZE);
+ frameWidth = frame.getWidth();
+ frame.setSize(frameWidth, SIZE);
frame.setVisible(true);
frame.setLocation(tmp.x, tmp.y);
openPopup(choice);
} finally {
frame.dispose();
< prev index next >