在这段代码中,我使用了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中输入字符串"How do I re-size this component automatically when the edge of it is reached?"时,它看起来像这样。
但是,当我输入字符串时,我希望JTextBox和JFrame可以自动调整大小,以产生类似于以下内容的东西。
唯一的问题是我不知道有什么可以让我这样做。我非常感谢任何帮助我完成此任务的帮助。
编辑
当组件自动重新调整大小时,我还希望该组件有一个最大尺寸。这样,随着更多数据的输入,组件不会超出某人的电脑监视器。