it-swarm.com.de

Wie kann ich die Höhe und Breite eines Textfelds in Java einstellen?

Ich habe versucht, mein JTextField die Breite ausfüllen zu lassen und eine Höhe dafür festzulegen, die aber fehlschlug. Ich habe versucht, den Code setPreferredSize(new Dimension(320,200)); hinzuzufügen, schlug aber trotzdem fehl. Gibt es eine Möglichkeit, wie mein JTextField die Breite ausfüllen und die Höhe auf 200 oder etwas festlegen kann?

8
Ms. B

Sie sollten nicht mit der Höhe spielen. Lassen Sie das Textfeld die Höhe anhand der verwendeten Schriftart bestimmen. 

Wenn Sie die Breite des Textfelds steuern möchten, können Sie verwenden

textField.setColumns(...);

um das Textfeld die bevorzugte Breite bestimmen zu lassen.

Oder wenn Sie möchten, dass die Breite die gesamte Breite des übergeordneten Bedienfelds ist, müssen Sie ein geeignetes Layout verwenden. Vielleicht der NORTH eines BorderLayouts. 

Weitere Informationen finden Sie im Swing-Tutorial zu Layout-Manager .

20
camickr

stellen Sie die Höhe auf 200 ein 

Setzen Sie die Variable Font auf eine große Variante (150+ px). Wie bereits erwähnt, steuern Sie die Breite mithilfe von Spalten und verwenden einen Layout-Manager (oder eine Einschränkung), der die bevorzugte Breite und Höhe berücksichtigt.

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

Es gibt einen Weg, der vielleicht nicht perfekt ist, aber Ihren Anforderungen entsprechen kann. Der Hauptpunkt hierbei ist die Verwendung einer speziellen Abmessung, um die Höhe zu begrenzen. Aber gleichzeitig ist die Breite tatsächlich frei, da die maximale Breite groß genug ist.

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);

fügen Sie die obigen Zeilen hinzu (f ist ein JFrame oder ein Container, in dem Sie das JTestField hinzugefügt haben)

Versuchen Sie jedoch, 'LayoutManager' in Java zu lernen. Weitere Links zu den Tutorials finden Sie in anderen Antworten. Versuchen Sie Folgendes: http://docs.Oracle.com/javase/tutorial/uiswing/layout/visual.html

1
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

Welche Art von LayoutManager verwenden Sie für das Bedienfeld, zu dem Sie das JTextField hinzufügen? 

Verschiedene Layout-Manager gehen auf unterschiedliche Weise an die Größenbestimmung von Elementen heran, einige respektieren SetPreferredSize (), während andere die Komponisten an ihren Container anpassen. 

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

ps. Das hat nichts mit Eclipse, seinem Java, zu tun. 

0
drewmoore

die Methode xyz.setColumns () steuert die Breite von TextField.

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



class miniproj extends JFrame {

  public static void main(String[] args)
  {
    JFrame frame=new JFrame();
    JPanel panel=new JPanel();
    frame.setSize(400,400);
    frame.setTitle("Registration");


    JLabel lablename=new JLabel("Enter your name");
    TextField tname=new TextField(30);
    tname.setColumns(45);

    JLabel lableemail=new JLabel("Enter your Email");
    TextField email=new TextField(30);
    email.setColumns(45);
    JLabel lableaddress=new JLabel("Enter your address");
    TextField address=new TextField(30);
    address.setColumns(45);
    address.setFont(Font.getFont(Font.SERIF));
    JLabel lablepass=new JLabel("Enter your password");
    TextField pass=new TextField(30);
    pass.setColumns(45);

    JButton login=new JButton();
    JButton create=new JButton();
    login.setPreferredSize(new Dimension(90,30));
    login.setText("Login");
    create.setPreferredSize(new Dimension(90,30));
    create.setText("Create");



    panel.add(lablename);
    panel.add(tname);
    panel.add(lableemail);
    panel.add(email);
    panel.add(lableaddress);
    panel.add(address);
    panel.add(lablepass);
    panel.add(pass);
    panel.add(create);
    panel.add(login);



    frame.add(panel);
    frame.setVisible(true);
  }
}

enter image description here

0
amir khan