Как заставить JTextField расширяться с помощью BorderLayout (Java) - PullRequest
2 голосов
/ 27 февраля 2009

У меня есть Java-программа, в которой я использую JTextField, но если я не укажу размер по умолчанию, он будет иметь ширину 0. Я вставляю его в BorderLayout, так как Я заставляю его расширяться, чтобы заполнить весь контейнер?

Ответы [ 4 ]

5 голосов
/ 27 февраля 2009

В приведенном выше примере текстовое поле будет работать нормально. Однако, если вы вставите в EAST или WEST, это не будет работать.

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, что вы можете иметь элемент автоматического расширения (с использованием веса), чтобы вместить весь контейнер.

2 голосов
/ 27 февраля 2009

заполнить весь контейнер? С BorderLayout?

container.add( jTextField, BorderLayout.CENTER );

Просто так.

1 голос
/ 27 февраля 2009

При программировании на Swing ключевым моментом является использование хорошего менеджера компоновки. Для меня идеальным менеджером макетов является MigLayout . Это просто лучшее универсальное решение для всех задач макета. Их сайт предоставляет отличную документацию и примеры.

0 голосов
/ 27 февраля 2009

Он автоматически заполнится до ширины контейнера, пример показан:

    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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...