Ответов (4)4
В приведенном выше примере текстовое поле будет работать нормально. Однако если вставить в ВОСТОК или ЗАПАД, это не сработает.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TextFieldTest {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
JTextField tf = new JTextField();
f.getContentPane().add(BorderLayout.EAST, tf);
f.pack();
f.setVisible(true);
}
}
Мой вопрос к вам: должен ли это быть BorderLayout или вы можете использовать другие менеджеры макетов? Если вы можете, вы должны проверить GridBagLayout, что вы можете настроить автоматическое расширение элемента (с использованием веса), чтобы он соответствовал всему контейнеру.
Он автоматически заполнится до ширины контейнера, как показано в примере:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TextFieldTest {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
JTextField tf = new JTextField();
f.add(tf, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
}
При программировании с помощью Swing ключевым моментом является использование хорошего менеджера компоновки. Для меня идеальным менеджером по расположению является MigLayout . Это просто лучшее универсальное решение для всех потребностей в макете. Их сайт предоставляет отличную документацию и примеры.