Beispiel #1
0
  public void persistWindowLocation(
      final Frame frame,
      final String keyValue,
      int defaultX,
      int defaultY,
      int defaultWidth,
      int defaultHeight) {
    final String key = name + "-" + keyValue;
    final int x = getInt(key + "-x", defaultX);
    final int y = getInt(key + "-y", defaultY);
    final int width = getInt(key + "-width", defaultWidth);
    final int height = getInt(key + "-height", defaultHeight);
    final GraphicsDevice[] screenDevices =
        GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
    for (final GraphicsDevice screenDevice : screenDevices) {
      final Rectangle b = screenDevice.getDefaultConfiguration().getBounds();
      final Rectangle maxBounds = new Rectangle(b.x + 20, b.y + 20, b.width - 40, b.height - 40);
      if (maxBounds.intersects(new Rectangle(x, y, width, height))) frame.setLocation(x, y);
    }
    if (width > 0 && height > 0) {
      final Dimension d = new Dimension(width, height);
      frame.setPreferredSize(d);
      frame.setSize(d);
    }
    frame.addComponentListener(
        new ComponentAdapter() {
          @Override
          public void componentResized(ComponentEvent e) {
            if (frame.isVisible()) saveWindowState(key, frame);
          }

          @Override
          public void componentMoved(ComponentEvent e) {
            if (frame.isVisible()) saveWindowState(key, frame);
          }
        });
  }