Кнопка внутри текстового поля - PullRequest
2 голосов
/ 01 января 2011

Мой код показывает кнопку внутри текстового поля, но когда изменяется входное значение, размер текстового поля также изменяется.Это мне не нравится.Есть ли такое решение, чтобы размер текстового поля оставался фиксированным?Или любая другая идея о том, как создать кнопку внутри текстового поля?Вот мой код:

JPanel panel = new JPanel();
panel.setLayout( new FlowLayout(FlowLayout.CENTER, 0, 0) );
panel.add(textField);
panel.add(button);
panel.setBackground( textField.getBackground() );
panel.setBorder( textField.getBorder() );
textField.setBorder(null);

Ответы [ 5 ]

1 голос
/ 01 января 2011

Есть ли какое-либо решение, чтобы размер текстового поля оставался фиксированным?

Я предполагаю, что вы создаете JTextField как:

JTextField textField = new JTextField();

В этом случае размер текстового поля изменяется при добавлении в него текста.

Вместо этого вы должны использовать:

JTextField textField = new JTextField(10);

, и текстовое поле останется постоянным размером и удержит минимум 10 символов перед прокруткой.

1 голос
/ 01 января 2011

Ваш пример является вторым вариантом, обсуждаемым в статье Граница компонента . Вместо этого вы можете захотеть install() a ComponentBorder, третий вариант, описанный далее в той же статье.

1 голос
/ 01 января 2011

Я попробовал ваш код, и он, кажется, работал нормально для меня, с небольшими изменениями. Может быть, панель сама изменяет размеры, а не textField. Попробуйте обернуть панель в другой JPanel, чтобы придать ей форму.

JPanel panel      = new JPanel();
JPanel outerPanel = new JPanel();
panel.setLayout( new FlowLayout(FlowLayout.CENTER, 0, 0) );
panel.add(textField);
panel.add(button);
panel.setBackground( textField.getBackground() );
panel.setBorder( textField.getBorder() );
textField.setBorder(null);
outerPanel.add(panel);
1 голос
/ 01 января 2011

Попробуйте BorderLayout и добавьте текстовое поле в BorderLayout.CENTER и кнопку в BorderLayout.EAST.

0 голосов
/ 01 января 2011

Используйте другой макет или попробуйте абсолютное позиционирование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...