如何在java swing中禁用textField的大小调整?

itr*_*tro 1 java layout swing textfield layout-manager

我有一个GUI,它基于Swing的JPanel,它使用BorderLayout.在北面板我添加了一个新的JPanel,它使用FlowLayout并包含两个textField和其他组件.当我更改textField的文本并隐藏此面板中的某些组件时,此textField会继续调整大小.我怎么能避免这个?无论发生什么,我都希望textField保持相同的大小.我已经尝试过setSize,setPreferredSize,setMinimumSize但没有成功.

txtSource = new WebTextField(source);
    txtSource.setMaximumSize(new Dimension(30,20));
    txtSource.setMinimumSize(new Dimension(20, 20));
    txtSource.setEditable(false);
    txtDestination = new WebTextField(destination);
    txtDestination.setMaximumSize(new Dimension(30,20));
    txtDestination.setMinimumSize(new Dimension(20, 20));
Run Code Online (Sandbox Code Playgroud)

之前: 在此输入图像描述

后: 在此输入图像描述

And*_*son 7

当我更改textField的文本并隐藏此面板中的某些组件时,此textField会继续调整大小.

此示例显示常量大小的文本字段.你能添加一个没有的SSCCE代码吗?

文字字段大小

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

class TextFieldSize {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JTextField smallField = new JTextField(5);
                JTextField largeField = new JTextField(20);
                JPanel gui = new JPanel(new FlowLayout());
                gui.add( smallField );
                gui.add( largeField );
                JFrame f = new JFrame("Text Field Size");
                f.add(gui);
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.pack();
                f.setLocationByPlatform(true);
                f.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)