В этом коде у меня есть панель в GridBagLayout
, которая содержит JLabel
и JTextField
.Автоматический повторный калибровка компонента в GridBagLayout
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, он выглядит так.
Однако, как я вхожу в строку Я хотел бы JTextBox
и тому JFrame
автоматически изменить размер, чтобы произвести то, что выглядит немного как это.
Единственная проблема в том, что я не знаю ничего, что позволяет мне сделать это. Я был бы очень признателен за любую помощь в выполнении этой задачи.
Редактировать
Когда компонент повторно размера автоматически я также хотел бы там быть максимальным размером для этого компонента. Таким образом, по мере ввода большего количества данных компонент не будет переустанавливать компьютерный монитор своего компьютера.
добавить DocumentListener к JTextField, что вычисления Длина строки в JTextField или число столбцов с намерениями GetPreferredSize или Dimension для JTextField, то звонить перепроверить и перерисовать в JFrame (возможно, эти два уведомления должны быть оберткой в invokeLater) – mKorbel