Abrir um JFrame em um monitor Auxiliar

O titulo já diz tudo eu preciso abrir um JFrame no monitor auxiliar, e se tiver mais de um ele tem que abrir em todos, menos no principal, onde vai estar rodando a aplicação principal

Procure por “dual head jframe” no Google.

Dica:

http://docs.oracle.com/javase/6/docs/api/java/awt/GraphicsEnvironment.html#getScreenDevices()
http://docs.oracle.com/javase/6/docs/api/java/awt/GraphicsDevice.html
http://docs.oracle.com/javase/6/docs/api/java/awt/GraphicsDevice.html#getDefaultConfiguration()
http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html#JFrame(java.lang.String,%20java.awt.GraphicsConfiguration)

(Basicamente: chame getScreenDevices para obter os GraphicDevices de cada monitor. Então escolha o monitor adequado para abrir seu JFrame, passando o GraphicsConfiguration que foi obtido com o método getDefaultConfiguration(). )

Você não pode abrir o MESMO JFrame em todos os outros monitores - você pode abrir MÚLTIPLAS instâncias desse JFrame, cada um em um monitor.

Eu utilizo o seguinte método,
Acredito que pode te ajudar.

    int tela=0;
    JFrame jfTelaSec = new JFrame;
    private void exibeTelaSec() {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] devices = ge.getScreenDevices();
        for (int i = 0; i < devices.length && tela < 0; i++) {
            if (UTI.confirmar(this, "Exibir interface de usuário na tela " + (i+1) + "?", "CONEM")) {
                tela = i;
            }
        }
        if (tela < 0) {
            UTI.aviso(this, "Nenhuma tela selecionada, execute o comando novamente", "CONEM");
        } else {
            devices[tela].setFullScreenWindow(jfTelaSec);
            int width = jfTelaSec.getWidth();
            int height = jfTelaSec.getHeight();
            int xx = (int) jfTelaSec.getLocation().getX();
            int yy = (int) jfTelaSec.getLocation().getY();
            devices[tela].setFullScreenWindow(null);
            jfTelaSec.setSize(width, height);
            jfTelaSec.setLocation(xx, yy);
            jfTelaSec.setVisible(true);
        }
    }

Qualquer cosia posta aí.

eu entendi a sua ideia, agora onde que eu coloco esse trecho de codigo, de pois da inicialização dos componentes, eu to utilizando o NetBeans para gerar as tela então eu colocaria nessa parte


public TelaPrincipal() {
        initComponents();
        setLocationRelativeTo(null);
        try{
            String strLAF = javax.swing.UIManager.getSystemLookAndFeelClassName();
            javax.swing.UIManager.setLookAndFeel(strLAF);
            javax.swing.SwingUtilities.updateComponentTreeUI(this);
            this.pack();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }  
        // Eu colocaria o trecho de codigo aqui isso awolf1

    }

Seria uma opção…
No software que desenvolvi que utiliza isso, ele trabalha com dois monitores, uma para o operador, e uma para exibir para o cliente informações…
Então quando o operador do sistema inicia alguma janela que contém informações que devem ser exibidas para o usuário eu executo esse método (no action do botão) para abrir a tela…
se no seu caso, a janela ficará sempre aberta no outro monitor pode ser no local onde você comentou mesmo…

ps.: o UTI.configrmar

    public static boolean confirmar(Component comp, String aviso, String titulo) {
        Object[] options = {"Sim", "Não"};
        int i = JOptionPane.showOptionDialog(comp,
                aviso, titulo,
                JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
                options, options[1]);

        if (i == JOptionPane.YES_OPTION) {
            return true;
        }
        return false;
    }
    public static boolean confirmar(Component comp, String aviso) {
        return confirmar(comp, aviso, "Confirmar");
    }

o que seria essa variavel UTI ???

UTI é uma classe java de utilitários. como por exemplo exibir um JOptionPane que solicita um texto.
Na mensagem anterior postei o código fonte desse método.