Как заблокировать размер компонентов в рамке большого размера при использовании GridLayout? - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу изменить размер фрейма, но сохранить первоначальный размер компонентов в GridLayout.Как мне это сделать?

Начальный размер.Это размер, который я хочу сохранить:

enter image description here

При изменении размера кадра размер компонентов изменяется.Я не хочу этого:

enter image description here

1 Ответ

1 голос
/ 14 апреля 2019

Ниже приведен mcve , демонстрирующий решение с использованием GridBagLayout , предложенное MadProgrammer .
Включение такого mcve в вопрос значительно облегчает помощь и повышает ваши шансы получить хорошие ответы.

import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class SwingMain {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new GridBagLayout()); //place desired content in a GridbagLayout
        frame.add(new TestPane());
        frame.pack();
        frame.setVisible(true);
    }
}

class TestPane extends JPanel{

    TestPane() {

        Border padding = BorderFactory.createEmptyBorder(10, 10, 10, 10);
        setBorder(padding);
        setLayout(new GridLayout(2, 2, 10, 10));
        add(new JLabel("Celsius"));
        add(new JTextField(10));
        add(new JLabel("Fahrenheit"));
        add(new JTextField(10));
    }
}

enter image description here

...