Размещение JTextFields в JFrame Java GUI - PullRequest
2 голосов
/ 09 декабря 2011

у меня есть:

public class BaseStationFrame1 extends JFrame
{

    JButton activateButton;
    JButton deactivateButton;
    BaseStation bs;

    JTextField networkIdField;
    JTextField portField;



    public BaseStationFrame1(BaseStation _bs){

        bs = _bs;

        setTitle("Base Station");
        setSize(600,500); 
        setLocation(100,200);  
        setVisible(true);

        activateButton = new JButton("Activate");
        deactivateButton = new JButton("Deactivate");
        Container content = this.getContentPane();
        content.setBackground(Color.white);
        content.setLayout(new FlowLayout()); 
        content.add(activateButton);
        content.add(deactivateButton);

        networkIdField = new JTextField("networkId : "+ bs.getNetworkId());
        networkIdField.setEditable(false);

        content.add(networkIdField);

        portField = new JTextField("portId : "+ bs.getPort());
        portField.setEditable(false);

        content.add(portField);}
    }

Моя проблема в том, что я не хочу, чтобы два текстовых поля появлялись справа от кнопок Activate и Deactivate, но под ними. Как я могу это исправить?

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Укажите свой менеджер компоновки, например:

content.setLayout(new GridLayout(2,2));

Это будет использовать Диспетчер компоновки сетки , чтобы создать сетку с 2 столбцами и 2 строками, чтобы ваши компоненты были тогда

Диспетчер макетов, который вы используете в данный момент, FlowLayout , добавляет только содержимое в конец текущей строки.тем не менее, он обернется, как только достигнет ограниченного края панели.Вы также должны проверить другие менеджеры компоновки здесь

Вы могли бы альтернативно использовать GridBagLayout , но вам нужно будет указать объект GridBagConstraints, который вы затем добавите вместе с отдельным человеком.элементы, например, так:

content.add(networkIdField, gridConstraints);

Подробнее об этом см. в связанном уроке.

0 голосов
/ 09 декабря 2011

Могу ли я предложить использовать Null Layout для родительского компонента?

setLayout (null);

, затем использовать setBounds (xPos, yPos, Width, Height);

для размещения компонентов на панели и т. Д.?

Это не позволит Java UI Manager управлять компонентами для фрейма, панели и т. Д.

Это кажется самым простым именее болезненный способ.

С уважением

...