web-dev-qa-db-fra.com

Comment définir la hauteur et la largeur d'un champ de texte en Java?

J'essayais de faire en sorte que mon JTextField remplisse la largeur et définisse une hauteur mais échoue toujours. J'ai essayé d'ajouter le code setPreferredSize(new Dimension(320,200)); mais j'ai quand même échoué. Est-il possible de faire en sorte que JTextField remplisse la largeur et définisse la hauteur sur 200 ou quelque chose de ce genre?

8
Ms. B

Vous ne devriez pas jouer avec la hauteur. Laissez le champ de texte déterminer la hauteur en fonction de la police utilisée. 

Si vous souhaitez contrôler la largeur du champ de texte, vous pouvez utiliser

textField.setColumns(...);

laisser le champ de texte déterminer la largeur préférée.

Ou si vous souhaitez que la largeur soit la largeur totale du panneau parent, vous devez utiliser une disposition appropriée. Peut-être le NORD d'une BorderLayout. 

Voir le tutoriel Swing sur Gestionnaires de disposition pour plus d'informations.

20
camickr

régler la hauteur à 200 

Définissez la Font sur une grande variante (150 pixels ou plus). Comme déjà mentionné, contrôlez la largeur à l'aide de colonnes et utilisez un gestionnaire de disposition (ou une contrainte) qui respectera la largeur et la hauteur préférées.

Big Text Fields

import Java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class BigTextField {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                // the GUI as seen by the user (without frame)
                JPanel gui = new JPanel(new FlowLayout(5));
                gui.setBorder(new EmptyBorder(2, 3, 2, 3));

                // Create big text fields & add them to the GUI
                String s = "Hello!";
                JTextField tf1 = new JTextField(s, 1);
                Font bigFont = tf1.getFont().deriveFont(Font.PLAIN, 150f);
                tf1.setFont(bigFont);
                gui.add(tf1);

                JTextField tf2 = new JTextField(s, 2);
                tf2.setFont(bigFont);
                gui.add(tf2);

                JTextField tf3 = new JTextField(s, 3);
                tf3.setFont(bigFont);
                gui.add(tf3);

                gui.setBackground(Color.WHITE);

                JFrame f = new JFrame("Big Text Fields");
                f.add(gui);
                // Ensures JVM closes after frame(s) closed and
                // all non-daemon threads are finished
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                // See http://stackoverflow.com/a/7143398/418556 for demo.
                f.setLocationByPlatform(true);

                // ensures the frame is the minimum size it needs to be
                // in order display the components within it
                f.pack();
                // should be done last, to avoid flickering, moving,
                // resizing artifacts.
                f.setVisible(true);
            }
        };
        // Swing GUIs should be created and updated on the EDT
        // http://docs.Oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    }
}
6
Andrew Thompson

Il existe un moyen qui peut ne pas être parfait, mais qui peut répondre à vos besoins. Le point principal ici est d’utiliser une dimension spéciale pour limiter la hauteur. Mais dans le même temps, la largeur est réellement libre, car la largeur maximale est suffisamment grande.

package test;
import Java.awt.*;
import javax.swing.*;

public final class TestFrame extends Frame{
    public TestFrame(){
        JPanel p = new JPanel();
        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
        p.setPreferredSize(new Dimension(500, 200));
        p.setMaximumSize(new Dimension(10000, 200));
        p.add(new JLabel("TEST: "));

        JPanel p1 = new JPanel();
        p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS));
        p1.setMaximumSize(new Dimension(10000, 200));
        p1.add(new JTextField(50));

        p.add(p1);

        this.setLayout(new BorderLayout());
        this.add(p, BorderLayout.CENTER);
    }
    //TODO: GUI CREATE
}
2
user1918908
     f.setLayout(null);

ajouter les lignes ci-dessus ( f est un JFrame ou un Conteneur où vous avez ajouté le JTestField )

Mais essayez d'apprendre 'LayoutManager' dans Java; reportez-vous à d'autres réponses pour les liens des tutoriels .Or essayez ceci http://docs.Oracle.com/javase/tutorial/uiswing/layout/visual.html

1
Abhishek Bhandari
package myguo;
import javax.swing.*;

public class MyGuo {

    JFrame f;
    JButton bt1 , bt2 ;
    JTextField t1,t2;
    JLabel l1,l2;

    MyGuo(){

        f=new JFrame("LOG IN FORM");
        f.setLocation(500,300);
        f.setSize(600,500);
        f.setLayout(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        l1=new JLabel("NAME");
        l1.setBounds(50,70,80,30);

        l2=new JLabel("PASSWORD");
        l2.setBounds(50,100,80,30);

        t1=new JTextField();
        t1.setBounds(140, 70, 200,30);

         t2=new JTextField();
        t2.setBounds(140, 110, 200,30);

        bt1 =new JButton("LOG IN");
        bt1.setBounds(150,150,80,30);

        bt2 =new JButton("CLEAR");
        bt2.setBounds(235,150,80,30);

         f.add(l1);
        f.add(l2);
         f.add(t1);
         f.add(t2);
         f.add(bt1);
         f.add(bt2);

    f.setVisible(true);

    }
    public static void main(String[] args) {
        MyGuo myGuo = new MyGuo();
}
}
0
Nyx.Tanzania

Quel type de LayoutManager utilisez-vous pour le panneau auquel vous ajoutez le JTextField? 

Différents gestionnaires de disposition abordent les éléments de dimensionnement de différentes manières, certains respectent SetPreferredSize (), tandis que d'autres redimensionnent les composants en fonction de leur conteneur. 

Voir: http://docs.Oracle.com/javase/tutorial/uiswing/layout/visual.html

ps. cela n'a rien à voir avec Eclipse, son Java. 

0
drewmoore