Java Swing How to - Create Different JFrames on different displays








Question

We would like to know how to create Different JFrames on different displays.

Answer

import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
/*  www  . jav a  2  s  . co  m*/
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {

  public static void main(String[] args) {
    GraphicsDevice[] sds = GraphicsEnvironment.getLocalGraphicsEnvironment()
        .getScreenDevices();
    for (GraphicsDevice sd : sds) {
      System.out.println(sd.getIDstring());
      GraphicsConfiguration gc = sd.getDefaultConfiguration();
      JFrame f = new JFrame(gc);
      f.add(new JLabel(sd.getIDstring()));
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      f.pack();
      centerOn(f, gc);
      f.setVisible(true);
    }
  }

  private static void centerOn(JFrame f, GraphicsConfiguration gc) {
    Rectangle bounds = gc.getBounds();
    int x = bounds.x + ((bounds.width - f.getWidth()) / 2);
    int y = bounds.y + ((bounds.height - f.getHeight()) / 2);
    f.setLocation(x, y);
  }
}