2009-11-12 2 views
0

Je dois changer la direction de la croissance de l'objet JTextField lorsque d'autres caractères y sont ajoutés. Actuellement, quand j'ajoute plus de choses, il grandit de gauche à droite mais j'ai besoin de cette croissance des limites de JTextField de droite à gauche. Par exemple. quand j'ajoute "StackOverflow" à ce JTextField o/p estModifier le sens de croissance d'un objet JTexField

<empty space>StackOverflow 

mais je veux,

StackOverflow<empty space> 

peut les gars vous me aider? J'ai essayé setHorizontalAlignment. Mais ça ne marche pas. Merci pour toute aide.

EDIT: Ajout de SSCCE pour une meilleure explication.

import java.awt.Container; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField;

public class JTextFieldExample { addComponentsToPane public static void (sous-fenêtre de conteneurs) { pane.setLayout (nouveau BoxLayout (volet, BoxLayout.Y_AXIS));

JTextField transitionEditorJTextField = new JTextField("StackOverFlow"); 
    pane.add(transitionEditorJTextField); 

    System.out.println("If I add text to JTextFiled notice that it grows towards Right - which is normal. " 
         + "But I want it to grow towards left."); 
    JButton button = new JButton("Button.I.Am"); 
    pane.add(button); 



} 

/** 
* Create the GUI and show it. For thread safety, 
* this method should be invoked from the 
* event-dispatching thread. 
*/ 
private static void createAndShowGUI() { 
    //Create and set up the window. 
    JFrame frame = new JFrame("BoxLayoutDemo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //Set up the content pane. 
    addComponentsToPane(frame.getContentPane()); 

    //Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    //Schedule a job for the event-dispatching thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 

}

Répondre

0
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
+0

Cela fonctionne dans le SSCCE mais de toute façon ce n'est pas dans mon application actuelle. C'est bizarre. – Chantz

0

Je ne suis pas sûr que je comprends votre question. Normalement, vous créez un JTextField avec le code comme:

JTextField textField = new JTextField(10); 

Cela donne le champ de texte préféré une taille fixe qui est respectée en fonction du gestionnaire de mise en page utilisé.

On dirait que vous faites quelque chose comme:

JTextField textField = new JTextField(); 

Dans ce cas, je ne pense pas que le champ de texte a une taille. Pouvez-vous même ajouter du caractère à cela? Eh bien peut-être la solution dans ce cas est d'ajouter un ComponentListener au champ de texte et de garder une trace de la taille d'origine. Chaque fois que la taille change, vous changez l'emplacement du champ de texte par la différence de taille. Encore une fois cela peut ou peut ne pas fonctionner selon le gestionnaire de disposition.

Si vous avez besoin de plus d'aide poster votre SSCCE montrant le problème.

+0

J'ai ajouté SSCCE à votre demande. Je ne veux pas le comportement actuel dans l'exemple donné. Je veux que ça grandisse vers la gauche. Merci. – Chantz