JTextField 大小无法更改

JTextField size can't be changed

public class AddMult extends JFrame {
    public AddMult() {
    setSize(600, 600);

    txtEnterNum = new JTextField();
    txtEnterNum.setSize(100,50);
    lblEnterNum.setLocation(100, 150);
    add(txtEnterNum);
    txtEnterNum.setVisible(true);


    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

} 我试图在其上创建一个表单和一个 JTextField。但问题是,我的位置和大小不起作用。 TextField 填满了整个表单。我该如何解决?

由于 JFrame 中的默认布局 (FlowLayout),大小不是 "working"。此布局不允许您更改任何对象的大小或位置。 尝试使用您自己的布局(修改 x 和 y 值以修改组件的大小和位置):

setLayout(new LayoutManager() {
        @Override
        public void addLayoutComponent(String name, Component comp) {



        }

        @Override
        public void removeLayoutComponent(Component comp) {

        }

        @Override
        public Dimension preferredLayoutSize(Container parent) {
            return null;
        }

        @Override
        public Dimension minimumLayoutSize(Container parent) {
            return null;
        }

        @Override
        public void layoutContainer(Container parent) {

        public void layoutContainer(Container parent) {

            float modifierx = Toolkit.getDefaultToolkit().getScreenSize().width/100;

            float Sizemodifier = Toolkit.getDefaultToolkit().getScreenSize().height/50;

            float modifiery = Toolkit.getDefaultToolkit().getScreenSize().height/150;

            int x=(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx);

            int y=(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery);

            int height =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/Sizemodifier);

            int DX =(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx);

            int DY =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery);

            for(int i = 0; i<parent.getComponentCount();i++){

                if(i%2==0){

                    parent.getComponent(i).setBounds(x,y,x,height);

                    x+= DX;

                }else{

                    parent.getComponent(i).setBounds(x,y,x,height);

                    x=Toolkit.getDefaultToolkit().getScreenSize().width/100;

                    y+=DY;

                }

            }
        }


    });

您必须在 JFrame 的构造函数中设置布局:

frame() {

    setSize(600, 600);
    setLayout(new LayoutManager() {...}

    txtEnterNum = new JTextField();
    txtEnterNum.setSize(100, 50);
    setLocation(100, 150);
    add(txtEnterNum);
    txtEnterNum.setVisible(true);


    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

使用obj.setBounds();设置帧中对象的大小和位置 或者你可以尝试使用布局 你可以阅读它:Visual Guide to Layout Managers (java documentation)