Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java] Posizione cursore

    Salve,

    dato il seguente codice :
    codice:
    import java.awt.*;
    import javax.swing.*;
    
    
    public class NewMain {
    
        private JLabel nomeLabel=new JLabel("nome");
            private JTextField nomeText=new JTextField("");
            private JLabel pswLabel=new JLabel("psw");
            private JTextField pswText=new JTextField("");
            private JFrame frame=new JFrame();
            private JPanel pannello=new JPanel();
            private JButton bottone=new JButton("prova");
            private JPanel pannellosx=new JPanel();
            
        
        public  void GUI() {
           
           GridBagLayout layout = new GridBagLayout();
           GridBagConstraints lim = new GridBagConstraints();
           pannello.setLayout(layout);
           lim.gridx = 0; lim.gridy = 0; 
           lim.fill = GridBagConstraints.HORIZONTAL;
           lim.insets.top = 5; lim.insets.bottom = 5; lim.insets.left = 5; lim.insets.right = 5;       
           layout.setConstraints(nomeLabel, lim); 
           pannello.add(nomeLabel); 
           lim.gridx = 1; lim.gridy = 0; 
           lim.fill = GridBagConstraints.HORIZONTAL;
           lim.insets.top = 5; lim.insets.bottom = 5; lim.insets.left = 5; lim.insets.right = 5;       
           nomeText.setColumns(10);
           layout.setConstraints(nomeText, lim); 
           pannello.add(nomeText); 
           lim.gridx = 0; lim.gridy = 1; 
           lim.fill = GridBagConstraints.HORIZONTAL;
           lim.insets.top = 5; lim.insets.bottom = 5; lim.insets.left = 5; lim.insets.right = 5;       
           layout.setConstraints(pswLabel, lim); 
           pannello.add(pswLabel); 
           lim.gridx = 1; lim.gridy = 1; 
           lim.fill = GridBagConstraints.HORIZONTAL;
           lim.insets.top = 5; lim.insets.bottom = 5; lim.insets.left = 5; lim.insets.right = 5;       
           layout.setConstraints(pswText, lim); 
           pannello.add(pswText); 
           pannellosx.add(bottone);
           
           frame.add(pannellosx, BorderLayout.WEST);
           frame.add(pannello, BorderLayout.CENTER);
           
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
           frame.getContentPane().setBackground(Color.WHITE);
           
           frame.setVisible(true);
       
    
    }
        public static void main(String[] args) {
           
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    NewMain f= new NewMain();                
                    f.GUI();
                }
            });
        }
        }
    vorrei cercare di :
    1) posizionare di default il cursorse sul jtextfield del nome
    2) attualmente per spostarmi dalla jtextfield del nome a quella della psw utilizzo il tasto tab, vorrei fare la stessa cosa utilizzando le frecce invece del tab

    suggerimenti?

    grazie per l'eventuale aiuto
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [Java] Posizione cursore

    Originariamente inviato da JunkyFunki
    Salve,

    dato il seguente codice :
    codice:
    ...
    vorrei cercare di :
    1) posizionare di default il cursorse sul jtextfield del nome
    2) attualmente per spostarmi dalla jtextfield del nome a quella della psw utilizzo il tasto tab, vorrei fare la stessa cosa utilizzando le frecce invece del tab

    suggerimenti?

    grazie per l'eventuale aiuto
    1) prova con nomeText.requestFocusInWindow()

    2) registra un keyListener:

    codice:
    nomeText.addKeyListener(new KeyAdapter {
       public void keyPressed(KeyEvent e) {
         if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
           cognomeText.requestFocusInWindow();
        }
    
        ...
       }
    });
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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

    Re: [Java] Posizione cursore

    Originariamente inviato da JunkyFunki
    1) posizionare di default il cursorse sul jtextfield del nome
    Se vuoi fare in modo che il componente 'nomeText' abbia inizialmente il focus, basta che fai:

    codice:
    frame.pack();
    nomeText.requestFocusInWindow();
    frame.setVisible(true);
    Originariamente inviato da JunkyFunki
    2) attualmente per spostarmi dalla jtextfield del nome a quella della psw utilizzo il tasto tab, vorrei fare la stessa cosa utilizzando le frecce invece del tab
    Con questo codice:

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    
    
    ....
    
    Set<AWTKeyStroke> set, newSet;
    
    set = frame.getFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
    newSet = new HashSet<AWTKeyStroke> (set);
    newSet.add (KeyStroke.getKeyStroke (KeyEvent.VK_DOWN, 0));
    frame.setFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newSet);
    
    set = frame.getFocusTraversalKeys (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
    newSet = new HashSet<AWTKeyStroke> (set);
    newSet.add (KeyStroke.getKeyStroke (KeyEvent.VK_UP, 0));
    frame.setFocusTraversalKeys (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, newSet);
    La impostazione dei nuovi tasti di forward/backward traversal non elimina il TAB, si aggiunge semplicemente a quello che c'è già. E vale per l'intero frame.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    grazie mille ad entrambi per l'aiuto !

    approfitto della discussione per chiedervi un altra cosa.

    e' possibile implementare i metodi di un bottone (listener e actionperformed) nella classe B per poi utilizzarli nella classe A contenente il main? oppure per funzionare devono essere necessiarmente nella stessa classe?
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da JunkyFunki
    e' possibile implementare i metodi di un bottone (listener e actionperformed) nella classe B per poi utilizzarli nella classe A contenente il main? oppure per funzionare devono essere necessiarmente nella stessa classe?
    Un listener tecnicamente lo puoi implementare dove ti pare, si tratta solo di una classe che implementa una certa interfaccia. E chiaramente il listener dovrai aggiungerlo al componente specificando una istanza della classe che implementa il listener.

    È chiaro che se implementi un listener in una classe completamente diversa e slegata da quella dove poi tieni i reference ai componenti, beh, ti complichi solo la vita per quanto riguarda l'accesso ai componenti da parte del listener. Percui tipicamente il listener si implementa o nella stessa classe o in una inner-class.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    preferisco implementarli in diversi classi in quanto si tratta di costruire molti bottoni e mettere tutti i relativi metodi in unica classe rischio di confondermi maggiormente.

    tornando al codice che m'avevi postato prima vorrei farti un paio di domande
    codice:
    Set<AWTKeyStroke> set, newSet;
    
    set = frame.getFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
    newSet = new HashSet<AWTKeyStroke> (set);
    newSet.add (KeyStroke.getKeyStroke (KeyEvent.VK_DOWN, 0));
    frame.setFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newSet);
    
    set = frame.getFocusTraversalKeys (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
    newSet = new HashSet<AWTKeyStroke> (set);
    newSet.add (KeyStroke.getKeyStroke (KeyEvent.VK_UP, 0));
    frame.setFocusTraversalKeys (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, newSet);
    in pratica ho impostato le frecce per scorrere i campi nel form e questo rimane valido per tutto il frame a prescindere dai contenuti.
    è possibile creare qualcosa di simile per richiamare un metodo?
    ad esempio se digito nella tastiera il tasto "s" viene invocato il metodo stampa()

    ho provato utilizzando il keylistener di una jtextarea nascosta ma per funzionare devo prima cliccare nei pressi della jtextarea e poi digitare s ed ovviamente non è ciò che volevo creare.

    suggerimenti?
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

  7. #7
    aggiungo un altra domanda


    quando un bottone viene selezionato si crea un bordo attorno al testo del bottone, è possibile personalizzare tale bordo?ad esempio cambiandolo di colore o dimensione

    tnx
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

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.