Проблема с выравниванием GridBagLayout

Я использую GridBagLayout для создания панели.

Мне нужен значок удаления в правом углу панели. Однако, если JTextArea не добавлен на панель, значок удаления сместится влево.

Как это сделать правильно?

обработанный

Вот мой код для настройки панели GridBagLayout

public void setting() {
    try {

        this.setLayout(new GridBagLayout());
        c = new GridBagConstraints();
        c.anchor = GridBagConstraints.WEST;
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1.0;  // **** comment this line out to see effect ****
        c.weighty = 1.0;  // **** comment this line out to see effect ****
        this.setBorder(BorderFactory.createLineBorder(Color.black));
        addMouseListener(this);
        buildTopJPane();
        setVisible(true);
    } catch (Exception err) {
        Utility.DisplayErrorMsg(pageErrorPrefix + err.getMessage().toString());
    }
}

Есть код для добавления компонентов в панель

private void buildTopJPane() {

    try {


        c.gridx = 0;
        c.gridy = 0;
        c.fill = GridBagConstraints.NONE;
        this.add(setAttonIconCreator(), c);

        c.gridx = 5;
        c.gridy = 0;
        c.gridwidth = 4;
        this.add(setDeleteIcon(), c);

        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 4;
        this.add(setPageDateLabel(), c);

        if (thisComment.content != null) {
            if (thisComment.content.length() > 0)
                c.gridx = 0;
            c.gridy = 2;
            c.gridwidth = 4;
            this.add(setContent(), c);
        }
    } catch (Exception err) {
        Utility.DisplayErrorMsg(pageErrorPrefix + err.getMessage().toString());
    }
}

person user819774    schedule 08.05.2014    source источник


Ответы (1)


Используйте комбинацию weightx и anchor на значке удаления.

Например, попробуйте использовать weightx = 1 и anchor = GridBagConstraints.WEST. Обратите внимание: это также сдвинет остальное содержимое влево.

Вы также можете попробовать вместо этого использовать weightx = 1 на панели комментариев.

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

Не забудьте сбросить ограничения, прежде чем использовать их в следующем компоненте.

person MadProgrammer    schedule 08.05.2014
comment
спасибо за предложение. Я установил GridBagConstraints.NORTHEAST на значок удаления и поместил его в правый верхний угол. - person user819774; 09.05.2014