View Full Version : [JAVA] Impostare il "TAB"
franksisca
18-11-2005, 08:47
Ragazzi, ho un frame con 2 JTextArea, come faccio a impostare che se preimo tab si sposta da una all'altra???
E poi,, come faccio a dire "se premo invio premi questo JButton"???
Grazie a tutti
franksisca
22-11-2005, 12:20
ma possibile che nessuno sà niente.....
prova a leggere questa sezione del tutorial, c'è anche un paragrafo: Customizing Focus Traversal
franksisca
22-11-2005, 14:46
prova a leggere questa sezione del tutorial, c'è anche un paragrafo: Customizing Focus Traversal
quale sezione di quale tutorial :mbe: :mbe: :mbe:
quale sezione di quale tutorial :mbe: :mbe: :mbe:Presumibilmente anx721 intendeva <questa> (http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html#customFocusTraversal)
Presumibilmente anx721 intendeva <questa> (http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html#customFocusTraversal)
esatto...ah franksisca un po di iniziativa personale...
franksisca
23-11-2005, 10:28
ragazzi, nn ho capito un H, chi mi helpa?????? :eek: :eek: :eek: :eek:
Prova a seguire l'esempio, se hai un tuo JPanel AreaPanel che estende JPanel e che contiene le due aree di testo nei campi area1 e area2 ti definisci dentro la classe AreaPanel una classe interna:
public class MyOwnFocusTraversalPolicy
extends FocusTraversalPolicy {
public Component getComponentAfter(Container focusCycleRoot,
Component aComponent) {
if (aComponent == area1) {
return area2;
} else return area1;
}
public Component getComponentBefore(Container focusCycleRoot,
Component aComponent) {
if (aComponent== area2) {
return are1;
} else return area2;
}
public Component getDefaultComponent(Container focusCycleRoot) {
return area1;
}
public Component getLastComponent(Container focusCycleRoot) {
return area2;
}
public Component getFirstComponent(Container focusCycleRoot) {
return area1;
}
}
quindi nel costruttore del MioPanel aggiungi:
MyOwnFocusTraversalPolicy newPolicy = new MyOwnFocusTraversalPolicy();
this.setFocusTraversalPolicy(newPolicy);
franksisca
23-11-2005, 13:04
guarda, ti posso fare una statua on-line :D :D :D
Sei grande, grazie mille
franksisca
05-12-2005, 15:16
problema, se nella textArea area1 premo tab mi crea lo spazio, mentre se lo faccio nell'altra, ritorna nella superiore.
edit:
Se tengo premuto il tasto ctrl funziona perfettamente, come faccio però ad evitare ciò??????
prova a invocare questo metodo sulla textarea che ti dà problemi:
area.setFocusTraversalKeysEnabled(false);
franksisca
05-12-2005, 17:10
nulla, sia false che true stesso problema.
prova a postare una piccola classe minimale che non abbia riferimenti esterni, compilabile ed eseguibile che presenti ilproblema, che se ho tempo faccio delle prove
franksisca
06-12-2005, 10:08
Allora, questo è tutto il codice, riferimenti esterni non c'è ne dovrebbero essere.
public class LogIn extends JFrame {
private Database db;
private JTextArea nomeUtenteT;
private JPasswordField passwordT;
private JLabel nomeUtenteL, passwordL;
private JButton login;
private JPanel pannello;
private MyOwnFocusTraversalPolicy newPolicy;
private static final long serialVersionUID = 3761122747765371187L;
private void inizializza() {
// TODO Auto-generated method stub
newPolicy = new MyOwnFocusTraversalPolicy();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
connessione();
centra();
settaOggetti();
aggiungiOggetti();
this.setVisible(true);
}
private void aggiungiOggetti() {
// TODO Auto-generated method stub
this.pannello.add(this.nomeUtenteL);
this.pannello.add(this.nomeUtenteT);
this.pannello.add(this.passwordL);
this.pannello.add(this.passwordT);
this.pannello.add(this.login);
this.pannello.setFocusTraversalPolicy(newPolicy);
this.add(this.pannello);
}
class MyOwnFocusTraversalPolicy extends FocusTraversalPolicy {
public Component getComponentAfter(Container focusCycleRoot, Component aComponent) {
if (aComponent == nomeUtenteT) {
return passwordT;
} else return nomeUtenteT;
}
public Component getComponentBefore(Container focusCycleRoot, Component aComponent) {
if (aComponent== passwordT) {
return nomeUtenteT;
} else return passwordT;
}
public Component getDefaultComponent(Container focusCycleRoot) {
return nomeUtenteT;
}
public Component getLastComponent(Container focusCycleRoot) {
return passwordT;
}
public Component getFirstComponent(Container focusCycleRoot) {
return nomeUtenteT;
}
}
}
Fammi sapere e grazie.
prova a postare una piccola classe minimale che non abbia riferimenti esterni, compilabile ed eseguibile che presenti ilproblema, che se ho tempo faccio delle prove
:rolleyes:
mancano tuti gli import oltre a riferimenti a database, connessione, centra e bla bla bla e dà nullPointerException subito.
franksisca
06-12-2005, 10:52
scusa, pensavo dovessi solo vedere e non compilare, allora ti allego tutto, manca solo una classe che è solo lei 20K :D :D :D
Comunque il mio problema è quando avvio inserimentoOre, ovvero la grafica di LogIn.
manca un file .bat per la compilazione e un file per lanciare l'applicazione..oltre al fatto che ci sono dipendenze esterne (vedi il jar per jdbc)
O mi mandi una cosa completa compilabile ed eseguibile o, come ti ho detto prima, una sola classe indipendente da tutto il resto, compilabile ed eseguibile che ha solo un frame che mostra il problema, senza tutto l'ambaradan della tua applicazione!
franksisca
06-12-2005, 11:10
guarda, pure che ti mando il tutto, non protesti accedere al database, perchè è"chiuso", sai l'università non vuole mandare out i suoi dati, se aspettifaccio tutto in una unica classe
edit: allegato, praticamente è lo stasso senza i riferimenti esterni.
ariedit, manca il bat
FinalEdit: ora dovrebbe esserci tutto.......... :sofico:
ma il tuo problema è che quando premi tab nell'area di testo appare il tab invece di saltare al prossimo componente?
Perchè stai usando JTextArea invece di JTextField? Con JTextField il problema non si presenta; le aree di testo sono programmate per ricevere gli eventi corrispondenti al tab e interpretarli come eventi "di scrittura"
Se vuoi comuqnue utlizzare l'area di testo invece di un JTextField, puoi risolvere cosi:
nomeUtenteT.setFocusTraversalKeys(java.awt.KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
in questo modo se premi il tab dentro l'area di testo il tab sarà interpretato come un evento di cambio del fuoco.
franksisca
06-12-2005, 13:33
ok, non la usavo perchè non la conoscevo :( :( :(
Sai, con la riforma i prof tralasciano alcune cose, e i manuali non li leggi mai tutti, comunque grazie mille, credo che la convertirò in jtextfield.
A prop, come cambio il carattere visualizzato nella jpassword??
ok, non la usavo perchè non la conoscevo :( :( :(
Sai, con la riforma i prof tralasciano alcune cose, e i manuali non li leggi mai tutti, comunque grazie mille, credo che la convertirò in jtextfield.
A prop, come cambio il carattere visualizzato nella jpassword??
A me non li ha spiegati nessuno i componenti swing all'uni, al massimo spiegavano la logica con cui erano realizzati, il pattern observer-observable, il pattern MVC, ecc
La maggiorparte delle risposte alle tue domande le trovi leggendoti la documentazione della sun (le api), le risposte che ti ho dato le ho prese tutte da là, quindi impara ad usarla
Se ad esempio leggi i metodi di JPasswordField trovi:
public void setEchoChar(char c)
Sets the echo character for this JPasswordField. [...] Setting a value of 0 indicates that you wish to see the text as it is typed, similar to the behavior of a standard JTextField.
Parameters:
c - the echo character to display
franksisca
06-12-2005, 14:39
infatti di solito uso quelle, ma al momento le sto scaricando.....
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.