Pergunta

Eu quero armazenar local de um JFrame (limites, extendedState) quando o usuário fecha. No entanto, quando o usuário move o quadro para a 2ª tela e maximiza-lo, como posso armazenar essas informações? Minha implementação ingênuo (e visualização única) é assim:


void saveFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.setProperty("State", String.valueOf(frame.getExtendedState()));
    props.setProperty("X", String.valueOf(frame.getX()));
    props.setProperty("Y", String.valueOf(frame.getY()));
    props.setProperty("W", String.valueOf(frame.getWidth()));
    props.setProperty("H", String.valueOf(frame.getHeight()));
    props.storeToXML(new FileOutputStream("config.xml"), null);
}
void loadFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.loadFromXML(new FileInputStream("config.xml"));
    int extendedState = Integer.parseInt(props.getProperty("State", String.valueOf(frame.getExtendedState())));
    if (extendedState != JFrame.MAXIMIZED_BOTH) {
        frame.setBounds(
            Integer.parseInt(props.getProperty("X", String.valueOf(frame.getX()))),
            Integer.parseInt(props.getProperty("Y", String.valueOf(frame.getY()))),
            Integer.parseInt(props.getProperty("W", String.valueOf(frame.getWidth()))),
            Integer.parseInt(props.getProperty("H", String.valueOf(frame.getHeight())))
        );
    } else {
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

Como posso descobrir em qual tela o quadro é localizado? Como posso mover um quadro para a segunda tela e maximizar-lo lá?

Foi útil?

Solução

Para encontrar o ID do dispositivo gráfico utilizado:

frame.getGraphicsConfiguration().getDevice().getIDString()

Indo para o outro lado, você pode encontrar os dispositivos gráficos com:

 GraphicsEnvironment.getLocalGraphicsEnvironment().getDevices()

Você pode então usar uma configuração do dispositivo no construtor JFrame. Eu não acredito que você pode configurá-lo após a construção.

Claro, você deve ter cuidado para não, digamos, abrir o quadro fora da tela porque a resolução tem mudança.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top