Abilitare campi con un check button

di il
5 risposte

Abilitare campi con un check button

Salve a tutti
sono alle prime armi con Java, e sto sperimentando un po' di cose
sto cercando di creare una semplice applicazione dove però mi sono ora arenato
quello che vorrei creare, come si vede nell'imagine, è una schermata dove posso o meno abilitare i campi e quindi la relativa compilazione dei moduli che qui chiamo AAAAA e BBBBB
Quindi : se metto il flag in "Flag A" posso compilare quel che sta alla sua destra (tranne proprio la voce AAAAAA) e così per i campi di BBBBBB se abilito il suo Flag.
al momento ho provato dalle impostazioni del Check Button "Flag A" ad inserire un "cambio di stato " della variabile "editabile" che ho messo nei rispettivi campi
FLAG A
		Button chkBck1 = new Button(shell2, SWT.CHECK);
			chkBck1.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				System.out.println("abilito disabilito");
				bck1 = !true;
				editabile = !editabile;
			}
		});
		chkBck1.setBounds(19, 33 + y, 23, 16);
esempio di campo dove utilizzo "editabile" per abilitare o meno il campo
		text_2 = new Text(shell2, SWT.BORDER);
		text_2.setToolTipText("");
		text_2.setText("d0:00");
		text_2.setEditable(editabile);
		text_2.setBounds(254, 31 + y, 40, 21)
Ovviamente non funziona !
altrimenti non avrei scritto

allego immagine :


grazie a tutti
Andrea

5 Risposte

  • Re: Abilitare campi con un check button

    zaiocrit ha scritto:


    		Button chkBck1 = new Button(shell2, SWT.CHECK);
    Uh ah ... è SWT ! È raro vedere qualcosa di SWT ma è bello vedere qualcosa di diverso dal solito Swing.

    zaiocrit ha scritto:


    			public void widgetSelected(SelectionEvent e) {
    				System.out.println("abilito disabilito");
    				bck1 = !true;
    				editabile = !editabile;
    			}
    C'è una questione abbastanza semplice: cambiare una variabile NON cambia qualcosa nei componenti. Il fatto che quella variabile "editabile" l'hai usata quando hai inizializzato quel text_2 ... NON vuol dire nulla.

    Soluzione banale: nel widgetSelected vai proprio a settare la editabilità con il setEditable.
    Ripeto: cambiare una variabile non provoca null'altro.

    P.S. magari invece di invertire un boolean, puoi basarti sullo stato del checkbox. Es.: un campo è editabile se il checkbox è checked.
  • Re: Abilitare campi con un check button

    andbin ha scritto:


    Uh ah ... è SWT ! È raro vedere qualcosa di SWT ma è bello vedere qualcosa di diverso dal solito Swing.
    Bah, sono partito da li un po' a caso
    meglio passare a Swing ?

    andbin ha scritto:


    Soluzione banale: nel widgetSelected vai proprio a settare la editabilità con il setEditable.
    Ripeto: cambiare una variabile non provoca null'altro.
    ecco ! mi son perso in un bicchier d'acqua !
    risolto !
          Button chkBck1 = new Button(shell2, SWT.CHECK);
             chkBck1.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent e) {
                System.out.println("abilito disabilito");
                editabile = !editabile;
                text_2.setEditable(editabile);
              }
          });
          chkBck1.setBounds(19, 33 + y, 23, 16);

    andbin ha scritto:


    P.S. magari invece di invertire un boolean, puoi basarti sullo stato del checkbox. Es.: un campo è editabile se il checkbox è checked.
    questo invece mi sfugge... mi documento

    grazie mille !
  • Re: Abilitare campi con un check button

    zaiocrit ha scritto:


    questo invece mi sfugge... mi documento
    Invece di
    editabile = !editabile;
    text_2.setEditable(editabile);
    più semplicemente:
    text_2.setEditable(chkBck1.getSelection());
    Se il checkbox è checkato il campo è abilitato.
  • Re: Abilitare campi con un check button

    andbin ha scritto:


    più semplicemente:
    text_2.setEditable(chkBck1.getSelection());
    Se il checkbox è checkato il campo è abilitato.
    Ma così è troppo facile !

    grazie
  • Re: Abilitare campi con un check button

    Complico un po' la cosa

    in realtà la maschera che vi ho proposto veniva creata in questo modo:
    con una classe creavo appunto la finestra, poi ho creato una classe per glio oggetti dei campi AAAA BBBBB CCCCC ecc ecc (me ne potrebbero servire 6/7)

    quindi nella classe principale della finestra ad un certo punto scrivevo :
    	TestModuli bck1 = new TestModuli(shell, "AAAAA", 0);
    	TestModuli bck2 = new TestModuli(shell, "BBBBBB", 55);
    ovvero... creo 2 oggetti passando al costruttore dei parametri che gli danno un nome, lo posizionano in una certa posizione ecc riportando tutti i campi necessari
    questo perchè volevo tenere la prima classe più compatta e non sapevo quanti moduli avrei dovuto inserire, e comunque volevo agilmente crearli con una sola chiamata.

    ora però cosa succede, se applico quanto scritto nei topic sopra, se seleziono "Flag A" mi abilita/disabilita i campi in BBBBB

    qual'è il passaggio fondamentale che mi sfugge ?
    sbaglio approccio vero ? devo rinunciare al "costruire" la finestra principale con degli oggetti ?
    il problema è che mi troverei a gestire tipo 200 (o poco meno) campi da creare/abilitare e poi andare a leggere. volevo spezzettarlo un po' per fare ordine
Devi accedere o registrarti per scrivere nel forum
5 risposte