web-dev-qa-db-ja.com

Javaでテキストフィールドの高さと幅を設定する方法は?

JTextFieldで幅を埋め、高さを設定しようとしましたが、それでも失敗しました。コードsetPreferredSize(new Dimension(320,200));を追加しようとしましたが、まだ失敗しました。 JTextFieldで幅を埋め、高さを200か何かに設定する方法はありますか?

8
Ms. B

高さで遊ばないでください。テキストフィールドで、使用するフォントに基づいて高さを決定します。

テキストフィールドの幅を制御したい場合は、使用できます

textField.setColumns(...);

テキストフィールドで優先幅を決定できるようにします。

または、幅を親パネルの幅全体にしたい場合は、適切なレイアウトを使用する必要があります。たぶん、BorderLayoutの北。

詳細については、Swingチュートリアルの Layout Managers を参照してください。

21
camickr

高さを200に設定します

Fontを大きなバリアント(150+ px)に設定します。すでに述べたように、列を使用して幅を制御し、優先幅と高さを尊重するレイアウトマネージャー(または制約)を使用します。

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

完璧ではないかもしれませんが、要件を満たすことができる方法があります。ここでの主なポイントは、高さを制限するために特別な寸法を使用することです。しかし同時に、最大幅は十分に大きいため、幅は実際には自由です。

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

上記の行を追加(fJFrameまたはContainerJTestFieldを追加した場所)

ただし、Java;チュートリアルのリンクについては他の回答を参照してください。またはこれを試してみてください 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