在JBorderLayout中更改JTextField的大小

Jon*_*Jon 2 java size resize jframe jtextfield

当我使用下面的代码时它根本不会改变大小,它仍然填充网格中的区域.

JPanel displayPanel = new JPanel(new GridLayout(4, 2));

JTextField titleText = new JTextField("title");

displayPanel.add(titleText);

titleText.setSize(200, 24);
Run Code Online (Sandbox Code Playgroud)

Jos*_*don 14

从GridLayout上的api:

容器被分成相等大小的矩形,并且每个矩形中放置一个组件.

尝试使用FlowLayout或GridBagLayout使您的设置大小有意义.另外,@ Serplat是正确的.您需要使用setPreferredSize(Dimension)而不是setSize(int,int).

    JPanel displayPanel = new JPanel();
    // JPanel displayPanel = new JPanel( new GridLayout( 4, 2 ) );
    // JPanel displayPanel = new JPanel( new BorderLayout() );
    // JPanel displayPanel = new JPanel( new GridBagLayout() );

    JTextField titleText = new JTextField( "title" );

    titleText.setPreferredSize( new Dimension( 200, 24 ) );

    // For FlowLayout and GridLayout, uncomment:
    displayPanel.add( titleText );

    // For BorderLayout, uncomment:
    // displayPanel.add( titleText, BorderLayout.NORTH );

    // For GridBagLayout, uncomment:
    // displayPanel.add( titleText, new GridBagConstraints( 0, 0, 1, 1, 1.0,
    // 1.0, GridBagConstraints.CENTER, GridBagConstraints.NONE,
    // new Insets( 0, 0, 0, 0 ), 0, 0 ) );
Run Code Online (Sandbox Code Playgroud)