2017-09-23 8 views
0

enter image description hereComment recevoir des entrées de textfield à textarea et beaucoup plus ...?

Comment puis-je faire comme ça? 1) Si l'utilisateur ouvre ce programme, il n'est pas nécessaire de cliquer sur champ de texte pour recevoir le focus, mais si vous passez à ce programme, il vous donne immédiatement un focus pour écrire au lieu de cliquer pour le focus.

2) Si l'utilisateur écrit un numéro d'identification ou un nom d'élément dans textfield, textarea répond à textfield et montre que l'ID ou le nom à l'utilisateur, comme, apparaît.

3) Comment réduire la zone de texte au cas où le panneau apparaîtrait dans les coins? Je voudrais faire un textarea un peu plus petit comme une boîte et à l'extérieur d'une boîte, c'est juste une couleur grise.

Afin de m'aider complètement, je donnerai volontiers le code.

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.FocusEvent; 
import java.awt.event.FocusListener; 
import java.awt.event.KeyListener; 
import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.ScrollPaneConstants; 
import javax.swing.SwingConstants; 

public abstract class Itemlist extends JFrame implements ActionListener, FocusListener { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 


    public static void main(String args[]) { 
     // create JFrame 
     JFrame frame = new JFrame("small project"); 
     frame.setDefaultCloseOperation(2); 
     frame.setPreferredSize(new Dimension(400, 600)); 
     frame.setLayout(new BorderLayout()); 
     frame.setResizable(false); 


     JPanel panel = new JPanel(new FlowLayout(SwingConstants.LEADING, 10, 10)); 
     frame.add(panel); 
     panel.setPreferredSize(new Dimension(100, 50)); 

     JTextField tf = new JTextField(25); 
     tf.setPreferredSize(new Dimension(100, 35)); 
     Font f = new Font("Times New Roman", Font.BOLD, 18); 
     tf.setFont(f); 
     panel.add(tf); 
     frame.add(tf, BorderLayout.PAGE_END); 

     tf.addFocusListener(new FocusListener() { 

      @Override 
      public void focusGained(FocusEvent e) { 
       tf.getText(); 

      } 

      @Override 
      public void focusLost(FocusEvent e) { 
       tf.setText(""); 

      } 

     }); 

     JTextArea ta = new JTextArea(); 
     frame.add(ta); 
     Font font = new Font("Times New Roman", Font.PLAIN, 16); 
     ta.setEditable(false); 
     ta.setFont(font); 

     JScrollPane scrollPane = new JScrollPane(ta); 
     scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     frame.add(scrollPane); 

     BufferedReader br; 
     String contents; 

     try { 
      br = new BufferedReader(new FileReader("C:/ItemList.txt")); 
      contents = br.readLine(); 

      while ((contents = br.readLine()) != null) { 


       ta.read(br, null); 
      } 
      br.close(); 
     } catch (IOException e) { 

     } 


     frame.pack(); 
     // frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 

    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 

    } 
} 

* Toute aide est appréciée. J'ai été coincé dessus.

Répondre

0
  1. Je suppose que vous voulez envisager d'utiliser un WindowListener et surveiller pour l'événement windowActivated, au cours de laquelle vous pouvez appeler requestFocusInWindow sur le JTextField de transférer focus automatiquement. La gestion de focus est un peu un art noir, car il a tendance à fonctionner légèrement différemment sur différentes plates-formes
  2. Je ne suis pas sûr tout à fait ce que vous voulez dire, mais je regarderais le support ActionListener. Cela demandera à l'utilisateur d'appuyer sur la touche "action" (généralement Entrez) pour le déclencher. Si vous voulez un retour d'informations en temps réel, le DocumentListener est ce que vous cherchez
  3. Utilisez le JTextAreas constructor pour spécifier le nombre préféré de lignes et de colonnes. Cela définira la taille défilante préférée du composant, ce qui affectera la taille du JScrollPane ainsi
  4. À l'avenir, essayez et contraindre votre question à la question unique et ciblée, ils sont plus faciles à répondre et produisent généralement plus de détails