Pagina 1 di 1

Uno Java - ridimensionare finestra

Inviato: giovedì 6 giugno 2024, 23:47
da gino62
Buongiorno, vorrei ridimensionare una finestra. In teoria dovrebbe essere semplice: desktop - frame - window

Codice: Seleziona tutto

public void ShrinkWindowBy75(XScriptContext xScriptContext) {
    XComponentContext xComponentContext = xScriptContext.getComponentContext();
    try {
        Object desktop = xComponentContext.getServiceManager().createInstanceWithContext(
                "com.sun.star.frame.Desktop", xComponentContext);
        XDesktop xDesktop = UnoRuntime.queryInterface(XDesktop.class, desktop);
        XFrame xFrame = xDesktop.getCurrentFrame();
        XWindow xWindow = xFrame.getContainerWindow();
        // Ottieni la posizione e la dimensione attuale della finestra
        Rectangle rect = xWindow.getPosSize();
        // Calcola la nuova dimensione (75% della dimensione originale)
        int newWidth = (int) (rect.Width * 0.75);
        int newHeight = (int) (rect.Height * 0.75);
        // Ridimensiona la finestra al 75% delle dimensioni originali
        xWindow.setPosSize(rect.X, rect.Y, newWidth, newHeight, PosSize.SIZE);
    } catch (Exception e) {
            e.printStackTrace();
    }
}
ma non riesco a ridimensionare la finestra. In cosa sbaglio?
grazie

Re: Uno Java - ridimensionare finestra

Inviato: sabato 8 giugno 2024, 10:01
da gino62
con questo semplice codice

Codice: Seleziona tutto

  public void ridimensionaFinestra(XScriptContext xScriptContext) {
        try {
            // Ottieni il Component Context dal contesto dello script
            XComponentContext xContext = xScriptContext.getComponentContext();

            // Ottieni il documento attualmente aperto
            XModel xModel = xScriptContext.getDocument();
            XFrame xFrame = xModel.getCurrentController().getFrame();
            XWindow xWindow = xFrame.getContainerWindow();

            // Imposta la nuova dimensione della finestra (1024x768)
            xWindow.setPosSize(0, 0, 1024, 768, PosSize.SIZE);

        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
a volte viene ridimensionata
e vedo per qualche attimo che si ridimensiona ma poi torna alla dimensione precedente, inoltre se la finestra è massimizzata non funziona nulla.
Sembra che il ridimensionamento della finestra venga sovrascritto da altri meccanismi di aggiornamento o layout di LibreOffice che ripristinano le dimensioni originali.