JTextField大小无法更改

问题描述 投票:-1回答:1
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正在填写整个表单。我该如何解决?

java swing size awt jtextfield
1个回答
-1
投票

由于JFrame中的默认布局(FlowLayout),大小不“正常”。此布局不允许您更改任何对象的大小或位置。尝试使用您自己的布局(修改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);
}
© www.soinside.com 2019 - 2024. All rights reserved.