自动调整GridBagLayout中组件的大小

在这段代码中,我有一个面板,GridBagLayout其中包含一个JLabel和一个JTextField

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

public class Simple
{
    JFrame simpleWindow = new JFrame("Simple MCVE");

    JPanel  simplePanel = new JPanel();

    JLabel lblSimple;
    JTextField txtSimple;

    public void numberConvertGUI()
    {
        simpleWindow.setBounds(10, 10, 420, 80);

        simpleWindow.setMinimumSize(new Dimension(420, 80));

        simpleWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        simpleWindow.setLayout(new GridLayout(1,1));

        createSimplePanel();

        simpleWindow.getContentPane().add(simplePanel);

        simpleWindow.setVisible(true);
    }

    public void createSimplePanel()
    {
        simplePanel.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();

        lblSimple = new JLabel();
        c.weightx = 0.0;
        c.weighty = 1.0;
        c.fill = GridBagConstraints.BOTH;
        c.insets = new Insets(0,2,0,2);
        c.gridx = 0;
        c.gridy = 0;
        c.ipady = 0;
        lblSimple.setText("Next to me is a JTextField: ");
        lblSimple.setHorizontalAlignment(JLabel.RIGHT);
        simplePanel.add(lblSimple, c);

        txtSimple = new JTextField();
        c.weightx = 0.5;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 5;
        c.gridx = 1;
        c.gridy = 0;
        c.insets = new Insets(0,2,0,2);
        simplePanel.add(txtSimple, c);
    }

    public static void main(String[] args)
    {
        Simple s = new Simple();
        s.numberConvertGUI();
    }
}

我希望能够根据输入的数据量自动调整文本字段的大小。例如,当字符串“到达边缘时如何自动调整该组件的大小?”时,在JTextField中输入,它看起来像这样。

看起来像什么

但是,当我输入字符串时,我希望JTextBoxJFrame能够自动调整大小以产生看起来像这样的东西。

调整大小的版本

唯一的问题是我什么都不知道。我将不胜感激完成此任务的任何帮助。

编辑

当组件自动调整大小时,我也希望该组件的最大大小。这样,随着输入更多数据,该组件将无法继续调整某人计算机显示器的大小

B队

Swing中没有提供内置功能来执行此操作。

您需要做的是DocumentListener在文本字段后面的文档中添加一个,并在添加或删除文本时收到通知。

然后,您将需要为文本字段计算所需的新大小(它本身可能很棘手-您可能需要使用FontMetrics),并调整控件的大小以匹配。此时,只需查看要调整大小的大小与希望允许的最大大小相比,即可轻松实现最大大小。

请参阅此处以获取有关以下信息DocumentListenerhttps : //docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html

请参阅此处以获取有关以下信息FontMetricshttps : //docs.oracle.com/javase/tutorial/2d/text/measuringtext.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章