Как изменить размер JTextField?

import javax.swing.*;
import java.awt.*;

public class Calculator {

// Объявяем переменные для всех компонентов калькулятора.
    JPanel windowContent;
    JTextField displayField;
    JButton button0;
    JButton button1;
    JButton button2;
    JButton button3;
    JButton button4;
    JButton button5;
    JButton button6;
    JButton button7;
    JButton button8;
    JButton button9;
    JButton buttonPoint;
    JButton buttonEqual;
    JButton sum;
    JButton subtraction;
    JButton multiplication;
    JButton devision;
    JPanel p1;

// В конструкторе создаются все компоненты и добавляются на фрейм с помощью комбинации Borderlayout и Gridlayout
    Calculator (){
        windowContent = new JPanel();//Создаем панель

        BorderLayout bl = new BorderLayout();// Задаём схему для этой панели
        windowContent.setLayout(bl);

        displayField = new JTextField(30);//Создаем поле для отображения ввода длиной 30
        windowContent.add("North", displayField);// Добавляем его в Северную область окна

// Создаём кнопки, используя конструктор класса JButton, который принимает текст кнопки в качестве параметра
        button0 = new JButton("0");
        button1 = new JButton("1");
        button2 = new JButton("2");
        button3 = new JButton("3");
        button4 = new JButton("4");
        button5 = new JButton("5");
        button6 = new JButton("6");
        button7 = new JButton("7");
        button8 = new JButton("8");
        button9 = new JButton("9");
        buttonPoint = new JButton(".");
        buttonEqual = new JButton("=");
        sum = new JButton("+");
        subtraction = new JButton("-");
        devision = new JButton("/");
        multiplication = new JButton("*");

// Создаём новую панель GridLayout которая содержит 12 кнопок - 10 кнопок с числами и кнопки с точкой и знаком равно
        p1 = new JPanel();
        GridLayout gl = new GridLayout(4, 3);
        p1.setLayout(gl);

// Добавляем кнопки на панель p1
        p1.add(button1);
        p1.add(button2);
        p1.add(button3);
        p1.add(button4);
        p1.add(button5);
        p1.add(button6);
        p1.add(button7);
        p1.add(button8);
        p1.add(button9);
        p1.add(button0);
        p1.add(buttonPoint);
        p1.add(buttonEqual);
        p1.add(sum);
        p1.add(subtraction);
        p1.add(devision);
        p1.add(multiplication);

// Помещаем панель p1 в центральную область окна
        windowContent.add("Center", p1);

//Создаём фрейм и задаём его основную панель
        JFrame frame = new JFrame("Calculator");
        frame.setContentPane(windowContent);

//Размер окна
        frame.setSize(400,300);

// Отображаем окно
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
    }
}

Как изменить размер (высоту) поля displayField? пробовал .size, dimensional, bound ничего не помогает. Фиксированный размер


Ответы (1 шт):

Автор решения: Denis Kukharenko

При менеджере компонентов BorderLayout (по умолчанию в JFrame) чтобы указанные параметры учитывались нужно использовать setPreferredSize вместо setSize

Метод выше увеличит сам виджет. Если нужно будет подстроить размер шрифта под новые размеры то есть метод setFont

→ Ссылка