Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-07-2005, 11:21   #1
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
[JAVA] Eventi finestre

Ciao Ragazzi,
ho bisogno di un consiglio sulle GUI che non so proprio come risolvere un problema.
Ho un Frame principale della mia applicazione.. Esso ha dei pannelli con dei bottoni. Ho collegato ad un bottone un evento secondo cui deve aprire un nuovo JFrame che consiste in un form di insermento.
Il problema è che la finestra principale (sottostante) rimane attiva, dandomi quindi la possibilità di di premere di nuovo quel bottone ed aprire un nuovo JFrame associato. Volendo evitare questo, avrei intenzione di disabilitare il form principale, in modo da non poter più aprire form secondari. Il problema è che non so come riabilitare il form principale alla chiusura della maschera appena aperta.

Grazie per i consigli
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 11:56   #2
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Fai implementare alla classe del frame principale l'intefaccia windowlsitener (o estendi la classe windowadapter), registri tale classe come ascoltatore degli eventi di finestra del frame secodario e nel metodo windowClosing che dovrai implementare (nella classe del frame principale) fai in modo che il frame si "riabiliti".

Più comodo secondo me è invece che aprire e chiudere il jframe secondario , renderlo "visibile" (setVisible(true)) alla pressione del bottone sul frame principale così ad una successiva pressione del bottone non si aprirà una nuova finestra ma verrà invocato di nuovo il setVisisble(true) , poi col bottone del frame secondario prendi i dati del form e rendi invisibile il frame.

ciao
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 11:56   #3
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
non so come risolvere il tuo problema, forse basta catturare l'evento onWindowClosing (o un nome simile) del secondo JFrame.
Cmq quando ho un bottone in un JFrame principale che deve aprire un altro JFrame secondario di solito io creo il frame secondario nel costruttore del frame principale senza poi mostrarlo a video.
Poi all'evento del click del bottone eseguo il metodo show del JFrame secondario, così anche se il bottone viene premuto 1000 volte di JFrame secondari se ne vede 1 solo.
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 11:58   #4
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
azz, Alvaro Vitali mi ha anticipato di poki secondi!

Ed è stato pure più esauriente, devo migliorarmi x il futuro
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 12:10   #5
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Grazie Alvaroo!!!
provo subito! ti faccio sapere!!
grazie ragazzi...
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 12:46   #6
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Dunque, ho fatto come hai detto tu Alvaro.. optando per la seconda scelta. E' molto più comodo caricare tutti i vari frames all'avvio del programma principale e renderli visibili a tempo opportuno.
Ora dovrei chiudere il frame in questione collegando l'evento di chiusura ad un bottone. Come devo fare?
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 12:51   #7
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
Allo stesso modo per chiudere i frame basta solo che li rendi non visibili, quindi basta usare il metodo hide() (oppure setVisible(false)) invece di show() (o setVisible(true))
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 12:55   #8
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
OK grazie, tanto a questo punto, visto che creo i nuovi oggetti Jframe nella classe principale, posso controllarli da lì...
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:17   #9
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Quote:
Originariamente inviato da Molz
Allo stesso modo per chiudere i frame basta solo che li rendi non visibili, quindi basta usare il metodo hide() (oppure setVisible(false)) invece di show() (o setVisible(true))
Il problema è che non posso fare this.setVisible(false) .

riepilogando: la mia GUI principale, crea un frame, lo visualizza su pressione di un tasto. Questo frame ha un tasto "Annulla". Tale tasto quando premuto deve rendere nascosto il frame. Non so come fare purtroppo... Questo perchè non trovo un metodo che lo faccia.
Ditemi se devo estendere ulteriori classi oltre a JFrame.
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:26   #10
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
Quando crei l'event listener per il bottone annulla non usare il costruttore di default ma fanne uno che prenda come parametro il tuo frame, una cosa simile
Codice:
nel JFrame

AnnullaListener a=new AnnullaListener (this);
annullaButton.addActionListener(a); //dove annullaButton è il nome del bottone "Annulla"


...

fouri dal JFrame
class AnnullaListener implements ActionListener{
frameSecondario fs; //dove frameSecondario è il nome della classe che rappresenta il tuo frame
AnnullaListener (frameSecondario f){
fs=f
}

metodo chiamato quando premi il tasto annulla di cui non ricordo il nome ()
{
fs.hide();
}

}
Spero di essermi spiegato in maniera decente, altrimenti richiedi pure spiegazioni

Ultima modifica di Molz : 20-07-2005 alle 13:28.
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:29   #11
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Ma scusa quando crei il JButton Annulla imposterai una scoltatore per l'evento di pressione:

JButton annulla = JBUtton("annulla");
annulla.addActionListener(oggetto-che-ascolta);

l' oggetto-che-ascolta implementerà ActionListener ed avrà un metodo ActionPerfomed(ActionEvent e) in cui puoi chiamare il setVisible(false) se l'oggetto che ha invocato l'evento è annulla.

oggetto-che-ascolta potrebbe essere il tuo frame principale...oppure lo stesso frame secondario, in tal caso annulla.addActionListener(oggetto-che-ascolta); diventerà annulla.addActionListener(this); ed il frame secondario dovrà implementare ActionListener ed il metodo ActionPerformed come sopra...

Secondo caso:
class frameSecondario extends JFrame implements ActionListener {

private JButton annulla = JBUtton("annulla");

public frameSecondario() {

super();
// bla bla bla
annulla.addActionListener(this);
// aggiungi il bottone al layout
}

public void ActionPerfomed(ActionEvent e) {

Object source = e.getSource();

if (source==annulla) this.setVisible(false);
}

}

Mi sto incastrando con le risposte di Molz ma credo che stiamo dicendo le stesse cose...

Ultima modifica di Alvaro Vitali : 20-07-2005 alle 13:36.
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:34   #12
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
Quote:
Originariamente inviato da Alvaro Vitali
Mi sto incastrando con le risposte di Molz ma credo che stiamo dicendo le stesse cose...
Infatti
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:35   #13
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Scusami.. purtroppo ci vuole un po' di pazienza con queste cose.. resta difficile anche a me spiegare bene il problema.. Intanto ti dico che sto usando Eclipse per realizzare la gui. Non so se hai in mente com'è lo stile di programmazione di Eclipse, ma posso dirti che ci sono tanti metodi getNomeComponente()
per inizializzializzarli;
Codice:
per esempio getAnnullaButton(){
    ... creazione oggetto
    ... impostazioni varie
    annullaButton.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event ActionEvent e) {
                     this.hide(); // o qualcosa del genere, intendendo this come il frame
              }
    });
}
devo quindi inserire cosa voglio che faccia la mia finestra dentro quel pezzo di codice ActionPerformed...
Non posso nemmeno mettermi a cambiare troppo la struttura del mio programma perchè ho la consegna di un progetto molto presto e mi devo pure sbrigare.. porca miseria!!!
Grazie amico... grazie x la disponibilità
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:38   #14
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
ah, ecco, nel frattempo che scrivevo stavate rispondendo...
ho letto quello che dice Alvaro Vitali...
dunque, se dovessi fare come ha detto lui, come lo adatto a quello stralcio di codice che ho postato?
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:39   #15
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Anche io uso eclipse ma la Gui cmq la faccio a mano proprio perchè non mi piace come organizza le cose, cerca di replicare questo che ti scrivo, in questo modo deleghi al frame secondario il compito di ascoltare la pressione del tasto e rendersi invisibile (mi pare che solo questo non riuscivi a fare):

Codice:
class frameSecondario extends JFrame implements ActionListener {

private JButton annulla = JBUtton("annulla");

public frameSecondario() {

super();
// bla bla bla
annulla.addActionListener(this);
// aggiungi il bottone al layout
}

public void ActionPerfomed(ActionEvent e) {

Object source = e.getSource();

if (source==annulla) this.setVisible(false);
}

}
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 13:45   #16
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
Come ti ho detto io farei così

Codice:
per esempio getAnnullaButton(){
    ... creazione oggetto
    ... impostazioni varie
    annullaButton.addActionListener(new MioListener(this));
}

.....
} //chiusura della parentesi graffa della classe principale (il tuo JFrame)

class MioListener implements java.awt.event.ActionListener() {
nomeDelleClasseCheRappresentaIlJFrame a;
MioListener (nomeDelleClasseCheRappresentaIlJFrame a2){
a=a2;
}

   public void actionPerformed(java.awt.event ActionEvent e) {
                     a.hide();               }
    }

Stranamente Alvaro mi ha anticipato, i nostri metodi sono diversi, ma vanno beneone entrambi.

Ultima modifica di Molz : 20-07-2005 alle 13:49.
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 14:16   #17
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
OK grazie!!! finalmente sono riuscito a fare questa cosa.. anche se con fatica ma l'importante è che ora ci sia riuscito.
Adesso però, oltre a questo bottone c'è anche un bottone OK, che dopo aver fatto determinate operazioni definite in un actionPerformed, anch'esso deve nascondere il frame...
Il codice di uno dei bottoni annulla che ho scritto è:
Codice:
// Bottone Annulla (OK - va bene)
private JButton getCancelButtonAdd() {
    if (cancelButtonAdd == null) {
        cancelButtonAdd = new JButton();
        cancelButtonAdd.setBounds(338, 147, 94, 25);
        cancelButtonAdd.setText("Annulla");
        cancelButtonAdd.addActionListener(new CloseListener(this));
    }
return cancelButtonAdd;
}
//*************************************
//  Classe ulteriore per chiudere il frame... OK - Va bene...
class CloseListener implements java.awt.event.ActionListener{
	FrmInserisci f;
	public CloseListener(FrmInserisci frm){
		f = frm;
	}
	
	public void actionPerformed(java.awt.event.ActionEvent e){
		f.hide();
	}
}
//*************************************
//Metodo di un bottone OK:
private JButton getOkButtonAdd() {
	if (okButtonAdd == null) {
		okButtonAdd = new JButton();
		okButtonAdd.setBounds(243, 146, 87, 26);
		okButtonAdd.setText("OK");
		okButtonAdd.addActionListener(new java.awt.event.ActionListener() { 
		public void actionPerformed(java.awt.event.ActionEvent e) {    

// deve effettuare delle operazioni e poi chiudere!!!! come il tasto annulla
					
				}
			});
		}
		return okButtonAdd;
	}
Questo è quanto... grazie ancora!
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 14:24   #18
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
basta che associ al bottone OK lo stesso listener che al bottone Annulla

okButtonAdd.addActionListener(new CloseLintener(this))

e poi come diceva alvaro vitali è sufficiente che nella funzione actionPerformed(ActionEvent e) tu invochi il metodo getSource sull'evento

Object source = e.getSource();

e poi esegui il controllo

if(source==okButtonAdd ){
esegui le tue operazioni
}
//e poi in ogni caso
f.hide();


Altrimenti puoi creare un listener diverso per ogni bottone che crei e in tal caso sarebbe
okButtonAdd.addActionListener(new OKCloseLintener(this))
e poi la stessa procedura di prima per il bottone Annulla

Ultima modifica di Molz : 20-07-2005 alle 14:27.
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 14:46   #19
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
OK! c'è solo un piccoliiiiiiissimo problema:
if(source==okButtonAdd ) non posso farlo perchè non mi vede quella variabile....
anche se ritengo sia una cosa assurda
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 15:04   #20
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
Che visibilità ha quel bottone?
In alternativa puoi impostare

okButtonAdd.setActionCommand("ok");


e poi sostituire

String command = e.getActionCommand();

if (command.equals("ok")) {
}

al posto di if(source==okButtonAdd )
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Axiom Space ha completato un importante ...
Gli aeroplani Airbus utilizzeranno i sat...
Una nuova immagine della cometa interste...
'La soluzione a un problema che non esis...
Radeon RX 9000 sì, Ryzen 9000 no:...
Amazon versa 180 milioni al Fisco e canc...
Meta, il Board di Supervisione guarda o...
DJI rivoluziona le consegne aeree: il nu...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v