Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Swing e applicazioni MDI (e proprietà frame)

    Salve a tutti,

    sto sviluppando un'applicazione swing, con un contenitore che contiene all'interno altri frame,

    Sto facendo con JInternalFrame mentre il contenitore è un semplice Frame.

    Volevo sapere

    1.) come si mette lo sfondo con immagine per il frame principaòle visto che non riesco a settarlo
    2.) i frame interni come si mettono fermi,ancora nel pannello visto.
    3.) come fare per mettere il contenitore al centro dello schermo e a sua volta i frame interni al centro rispetto alla dimensione del frame padre. Ricordo che le dimensioni del contenitore principale devono essere la metà dello schermo, e i frame iterni devono essere di varie dimensioni.. dipende dalla finestra.


    GRAZIE ANTICIPATAMENTE

    PS. Sviluppo fatto con NetBeans
    Tony

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Swing e applicazioni MDI (e proprietà frame)

    Originariamente inviato da tony83
    Sto facendo con JInternalFrame mentre il contenitore è un semplice Frame.
    Beh no .... il "contenitore" diretto dei JInternalFrame dovrebbe essere generalmente/tipicamente un JDesktopPane.

    Originariamente inviato da tony83
    1.) come si mette lo sfondo con immagine per il frame principaòle visto che non riesco a settarlo
    Non è questione di settare una qualche proprietà!! (che non c'è, appunto ....). Usando JDesktopPane, si dovrebbe estenderlo e fare l'override di paint(Graphics) in cui disegni la immagine. Ho detto paint() e non paintComponent() perché JDesktopPane che estende JLayeredPane è un componente particolare e stando ai sorgenti mi sembra di capire che paintComponent() non viene nemmeno invocato.

    Originariamente inviato da tony83
    2.) i frame interni come si mettono fermi,ancora nel pannello visto.
    Qui non è molto chiaro .... proprio a livello letterale.

    Originariamente inviato da tony83
    3.) come fare per mettere il contenitore al centro dello schermo e a sua volta i frame interni al centro rispetto alla dimensione del frame padre. Ricordo che le dimensioni del contenitore principale devono essere la metà dello schermo, e i frame iterni devono essere di varie dimensioni.. dipende dalla finestra.
    setLocation()+setSize() oppure setBounds(). Le dimensioni dello schermo le ottieni da getScreenSize() di Toolkit.

    Originariamente inviato da tony83
    PS. Sviluppo fatto con NetBeans
    Non ha molta importanza ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Re: Re: Swing e applicazioni MDI (e proprietà frame)

    Che differenza c'è tra l'utilizzo di un frame e un jdesktoppane ? aprivo i frame aggiungendolo nel contenitore, se invece utilizzo un jdesktoppane che differenza ho ? come si fa senza distruggere tutto il codice già fatto ?


    1.) Cosi riesco a impostare anche lo sfondo in un jkdestoppane ?

    2.) intendevo dire che non mi piacciono i frame che si muovono, vorrei fare in modo che non si possono spostare

    3.) si l'ho fatto ma nn appare al centro dello schermo
    Tony

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Swing e applicazioni MDI (e proprietà frame)

    Originariamente inviato da tony83
    Che differenza c'è tra l'utilizzo di un frame e un jdesktoppane ?
    La prima differenza più evidente è che JFrame è una finestra "top-level" (non lo metti dentro qualcosa!) mentre JDesktopPane è un normale componente che devi mettere dentro un contenitore (es. JPanel o altro).
    La seconda differenza è che JDesktopPane estende JLayeredPane la cui API consente di gestire correttamente la "sovrapposizione" su diversi livelli dei vari JInternalFrame. In pratica aggiunge la nozione di Z-order. Cosa che invece JFrame non offre affatto!

    Originariamente inviato da tony83
    1.) Cosi riesco a impostare anche lo sfondo in un jkdestoppane ?
    Ripeto che settare un sfondo di un componente o di una finestra non si riduce alla invocazione di un setQualcosa() ... che appunto non esiste. Non è una funzionalità standard!

    Detto in generale si deve estendere il componente, conoscere bene come funziona il painting in Swing (e ci sono guide/tutorial in rete per questo) e a quel punto fare l'override del giusto metodo nel modo giusto .... e disegnare!

    Originariamente inviato da tony83
    2.) intendevo dire che non mi piacciono i frame che si muovono, vorrei fare in modo che non si possono spostare
    Un JInternalFrame non si è obbligati a metterlo per forza dentro un JDesktopPane ..... dopotutto JInternalFrame è un JComponent, quindi tecnicamente lo si può mettere in qualunque posto dove si può mettere un componente Swing.
    Ma anche se metti un JInternalFrame dentro es. un JPanel o il content-pane di un JFrame .... esso non "perde" la funzionalità di dragging. Ovvero può ancora muoverlo. E per impedire questo ... credo che non sia banale e probabilmente nemmeno furbo/pratico ....
    Insomma: JInternalFrame (con JDesktopPane) è nato per poter realizzare applicazioni MDI dove generalmente ci sono un numero arbitrario di finestre interne trascinabili ed eventualmente iconizzabili, massimizzabili, ecc... dall'utente.

    Se non è questo che vuoi fare .... cambia design. Se uno vede un JInternalFrame con il suo bordino, la sua barretta del titolo, ecc... vorrebbe poterla anche muovere. Ma se tu vuoi impedirlo ... stai stravolgendo tutto!

    Hai un certo numero fisso di "contenuti" (detto in generale) che vuoi visualizzare in diverse aree altrettanto fisse e non spostabili?? Usa dei pannelli ... una griglia di pannelli per la precisione. Non so .... fai tu ma almeno fai le cose in modo pulito e logico.

    Originariamente inviato da tony83
    3.) si l'ho fatto ma nn appare al centro dello schermo
    Beh ... dipende da cosa hai fatto! Posta il codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Re: Re: Re: Re: Swing e applicazioni MDI (e proprietà frame)

    Originariamente inviato da andbin
    La prima differenza più evidente è che JFrame è una finestra "top-level" (non lo metti dentro qualcosa!) mentre JDesktopPane è un normale componente che devi mettere dentro un contenitore (es. JPanel o altro).
    La seconda differenza è che JDesktopPane estende JLayeredPane la cui API consente di gestire correttamente la "sovrapposizione" su diversi livelli dei vari JInternalFrame. In pratica aggiunge la nozione di Z-order. Cosa che invece JFrame non offre affatto!

    Ripeto che settare un sfondo di un componente o di una finestra non si riduce alla invocazione di un setQualcosa() ... che appunto non esiste. Non è una funzionalità standard!

    Detto in generale si deve estendere il componente, conoscere bene come funziona il painting in Swing (e ci sono guide/tutorial in rete per questo) e a quel punto fare l'override del giusto metodo nel modo giusto .... e disegnare!

    Un JInternalFrame non si è obbligati a metterlo per forza dentro un JDesktopPane ..... dopotutto JInternalFrame è un JComponent, quindi tecnicamente lo si può mettere in qualunque posto dove si può mettere un componente Swing.
    Ma anche se metti un JInternalFrame dentro es. un JPanel o il content-pane di un JFrame .... esso non "perde" la funzionalità di dragging. Ovvero può ancora muoverlo. E per impedire questo ... credo che non sia banale e probabilmente nemmeno furbo/pratico ....
    Insomma: JInternalFrame (con JDesktopPane) è nato per poter realizzare applicazioni MDI dove generalmente ci sono un numero arbitrario di finestre interne trascinabili ed eventualmente iconizzabili, massimizzabili, ecc... dall'utente.

    Se non è questo che vuoi fare .... cambia design. Se uno vede un JInternalFrame con il suo bordino, la sua barretta del titolo, ecc... vorrebbe poterla anche muovere. Ma se tu vuoi impedirlo ... stai stravolgendo tutto!

    Hai un certo numero fisso di "contenuti" (detto in generale) che vuoi visualizzare in diverse aree altrettanto fisse e non spostabili?? Usa dei pannelli ... una griglia di pannelli per la precisione. Non so .... fai tu ma almeno fai le cose in modo pulito e logico.

    Beh ... dipende da cosa hai fatto! Posta il codice.
    capito... va bene sei stato chiarissimo...
    grazie per tutto.
    In caso riscrivo!... ;-)
    Tony

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.