Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GridLayout时,如何在重新调整大小的框架中锁定组件的大小?_Java_Swing_Layout Manager_Grid Layout - Fatal编程技术网

Java 使用GridLayout时,如何在重新调整大小的框架中锁定组件的大小?

Java 使用GridLayout时,如何在重新调整大小的框架中锁定组件的大小?,java,swing,layout-manager,grid-layout,Java,Swing,Layout Manager,Grid Layout,我想使框架的大小可以调整,但在GridLayout中保持组件的初始大小。我该怎么做 初始尺寸。这是我想要保留的尺寸: 调整框架的大小时,组件的大小将发生变化。我不想要这个: 以下是一个示例,演示了使用GridBagLayout的解决方案 在问题中加入这样的mcve会使帮助更容易,你获得好答案的机会也更高 import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.BorderFactory; imp

我想使框架的大小可以调整,但在GridLayout中保持组件的初始大小。我该怎么做

初始尺寸。这是我想要保留的尺寸:

调整框架的大小时,组件的大小将发生变化。我不想要这个:

以下是一个示例,演示了使用
GridBagLayout
的解决方案
问题中加入这样的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));
    }
}

将容器放在第二个容器中,使用
GridBagLayout
将第二个容器无约束地布局到父容器上
GridBagLayout
将继续将组件布局到其首选大小,并在有更多空间时将第二个容器置于父容器的中心。另外,这使用
GroupLayout
进行有用的大小调整。我必须使用GridBagLayout,因为它是一个requirement@MadProgrammer你能给我举个例子吗?我不明白“你能给我举个例子吗?”-张贴一条。这使帮助变得容易得多。