Newsgroup: it.comp.java
Titolo: Come si disabilita la "x" di chiusura frame?

Salve ragazzi,
dovrei creare un frame al quale voglio inibire i pulsanti di default:
per quello di "ingrandisci" è semplice basta impostare a false
setresizable, mentre per riduci a icona e chiudi non so come fare.
Ho provato ad intercettare l'evento ma cmq il pulsante è sempre
clickkabile, mentre io vorrei inibire proprio il pulsante.
Un grazie a chi saprà darmi una mano.
--
Saluti,
______________________
ky@§hañ®
kyashan@it

clickkabile, mentre io vorrei inibire proprio il pulsante.
Non è una risposta diretta, ma hai già considerato JWindow e JDialog 
(per Swing) o Window e Dialog (per AWT)?
HTH
-- 
Ciao
	Fabrizio C.

(per Swing) o Window e Dialog (per AWT)?
JWindow ha come limitazione che non posso spostarla, JDialog ha lo
stesso inconveniente del JFrame, la x non riesco a inibirla


stesso inconveniente del JFrame, la x non riesco a inibirla
Quello che segue è valido almeno per jdk >= 1.4 ...
import javax.swing.*;
public class Xinibita {
    public static void main(String[] args) {
        JDialog d = new JDialog((JFrame)null, "Xinibita");
        d.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        // qui servirebbe un
        // d.addWindowListener(...);
        d.setSize(320, 240);
        d.setResizable(false);
        d.setVisible(true);


SU JFrame/JDialog basta settare la proprietà :
    setDefaultCloseOperation(param)
I parametri passabili a questo metodo sono :
    DO_NOTHING_ON_CLOSE   // Disinibisce il tasto [ QUESTO E' QUELLO CHE
SERVE A TE ]
    HIDE_ON_CLOSE                    // Opzione di default che nasconde
semplicemente il frame
    DISPOSE_ON_CLOSE             // Indovina?????
Questa funzione gira anche su JDK più vecchi del 1.4, se non erro era
presente anche sul più vecchio 1.1
Su AWT, il trucco sta nell'intercettare, per quanto riguarda la chiusura :
    windowClosing(WindowEvent e)
Credo che basti o fare un consume() dell'evento o anche un più semplice
return.
Ciao.

return.
e.consume() non si puň perché č protected.
In AWT mi sembra che non serva nemmeno intercettare l'evento, ma, in caso, 
anche il metodo vuoto va bene (oppure un return come... segnaposto). :-)



Si è quello che alla fine ho fatto, quello che avrei preferito è
disabilitare il tasto, come succede con setResizable(false) per quanto
riguarda il tasto "ingrandisci".
Grazie cmq


-----BEGIN PGP SIGNED MESSAGE-----
Se non ho capito male, quello che vuoi fare non č solo disabilitare
le azioni provenienti dalla pressione della "x", ma dare anche un
aspetto di "pulsante disabilitato" (quindi riflettere lo stato
interno nella GUI)...
Mi dispiace, non penso che la JVM te lo lasci fare. Questo perchč la
"x" di chiusura della finestra fa parte della GUI di Windows, e non č
possibile trovare un elemento corrisponente in altre GUI (vale a dire
un pulsante che invii esattamente un messaggio di chiusura
all'applicazione associata alla finesta). Ad esempio:
- - su Mac (almeno, l'ultimo OS che ho visto) non č presente. É vero,
c'č un menů di sistema, ma non c'č un pulsante di chiusura diretta
- - su Linux, in alcune interfaccie, č presente una "x" di chiusura, ma
questa arriva a killare direttamente l'applicazione senza passare da
un msg di chiusura.
Il mio consiglio č quello di usare j2sdk 1.4.0 (o un jdk superiore) e
di abilitare le "decorazioni" di Swing, ignorando totalmente
l'interfaccia nativa del sistema operativo. Questo risultato č
raggiungibile aggiungendo le seguenti righe come primissime
istruzioni del metodo main():
JDialog.setDefaultLookAndFeelDecorated(true);
JFrame.setDefaultLookAndFeelDecorated(true);
Toolkit.getDefaultToolkit().setDynamicLayout(true);
System.setProperty("sun.awt.noerasebackground","true");
...č sufficiente scriverle cosě come sono!
E anche tu potrai dire che i tuoi programmi vivono nel "Sistema
Operativo Java" :P
- -----
"Lascia che gli eventi seguano la propria strada"
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.0.4
iQIVAwUBPaqGas0yfIf+Uem7AQFkzxAAuJwnAUmvF1ls77PZ8mBArHvxGv2yc90O
q50g3NtWA+qjUpBU5ix/o/5XZG8Kokej/bhhLUWo3qULnTpr8OF9zk0/edQ1QR1Z
E46nsw9aBb0wSWuYMDv0GrRgcx2O72jOmjxn+DAeziiBb3w63uk5ouqWEy8EKCzU
xp0/My+sa38klkjGuJ0MT/z3Tj0jV0WHbvi2u9VxV0htw5kMJB4YiDAnTpHkHC1B
Sd6bM8Dx1ytkvi/AjTEc1yfGRgG8x0/vfPRaU2DVb6PUVlRBfNO5NTm9HJYnyrf6
06r3QoWpFYQHn9JxKsn/XU+QCfUOgiEQg8RO8geUZZOrfpCudx5hWMYnahVta7vb
jqynuLk+WTDaQLxEEcn+t8nG6DGALAssZTBctQd+uofPAGQGtSetZrr2gkofeVpM
Jy9iXfm1mUr+Lequ0cvcWdWVSzhHvYCd9K7ZjMM8+l3msKebOq3qMyd4uD+viEqK
GD8IYGTKKb+NOh4NHRznx9jT3hdX2YG4qVqaHmTpcZb9dscxcij6K7n3FsdL1AKP
EGz4MauRuLBJi04RksPfxb7xyzsy9VSVyt/tihIl5ACYa7aX/LzcQySG/Aqgu7Ot
B+DBaa6UZdVJvsKcQUFPKRhpWkjU74Vsm95K8vCUnTnJCAMZgz4vDBMVJq9QhJ1u
axwlC9rTyes=
=p8X1
-----END PGP SIGNATURE-----

Salve..
non sono del tutto d'accordo.. sia sotto Windows sia sotto Linux se il
frame aperto da una applicazione Java possiede il pulsante di chiusura la
sua selezione genera un evento WindowClosing che puo' essere catturato e
gestito a programma...
Riporto un pezzetto di codice....
    addWindowListener(new WindowAdapter()
    {
     public void windowClosing(WindowEvent e)
     {
       if(mood.equals("sa"))
        System.exit(0);
       else
        dispose();
     }
    });
per cui si puo' sia terminare l'applicazione sia semplicemente chiudere il
frame...
Lorenzo


Salve a tutti!!!
Volevo chiedere una cosa!Ma in Java non posso #semplicemente# estendere la
classe e sovrapporre solo il metodo che mi interessa copiandolo da quello
vecchio +/- apportandovi le modifiche che mi interessano?Nel caso specifico
inserire la possibilita di disabilitare il bottone di chiusura come e
possibile fare x esimpio in Smalltalk?
Scusate la domanda magari banale o impropria ma sono alle prime armi con
Java!
Ciao.
"ky@§hañ®" <P@olo.x> ha scritto nel messaggio
news:39h9qu4hlqdkrh05k...@4ax.com...


 Scusami, ma non resistevo. :-)
Sarà un "side-effect" :-)