Выравнивание JButton вправо - PullRequest
3 голосов
/ 23 января 2012

Я создаю интерфейс в Java, и я хочу выровнять кнопку вправо. Я пытался, но это не работает. Может кто-нибудь сказать мне, как это сделать?

import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Button_Alignment extends JFrame{
    public JPanel header,body,footer;
    public JButton add1;
    public JButton save;
    public Button_Alignment(){
        super("BUTTON");
        GridLayout g1 = new GridLayout(3,1);
        setLayout(g1);
        //////
        header = new JPanel();
        JButton add1 = new JButton("add");
        header.add(add1);
        JButton save = new JButton("save");
        header.add(save);
        //////
        add(header);
        header.setBackground(Color.cyan);
    }
    public static void main(String[] args){
        Button_Alignment ba = new Button_Alignment();
        ba.setSize(400, 400);
        ba.setVisible(true);
    }
}

Ответы [ 4 ]

4 голосов
/ 23 января 2012

Ваш текущий менеджер макета (GridLayout) создается с 3 строками и одним столбцом.Следовательно, компоненты, которые вы добавляете к JFrame, будут отображаться по вертикали сверху вниз.Хуже того, GridLayout будет пропорционально распределять одинаково среди всех 3 компонентов, что означает, что ваши кнопки будут растягиваться в обоих направлениях, что почти наверняка не , что вам требуется.

Я хотел бы рассмотреть возможность использования альтернативного менеджера компоновки.Для простых макетов я предпочитаю BorderLayout или FlowLayout.Для более сложных макетов я склоняюсь к GridBagLayout, хотя есть другие, которые предпочитают MigLayout.

Больше информации здесь .

2 голосов
/ 23 января 2012

Попробуй так:

JButton save = new JButton ("save");
setLayout (new BorderLayout ());
add (save, BorderLayout.EAST);
0 голосов
/ 23 января 2012

Вы устанавливаете GridLayout для конструктора JFrame вместо JPanel (по умолчанию JPanel FlowLayout), я думаю, что

header.setLayout(new GridLayout(3,1));
header.add(add1);
header.add(save);

уведомление ---> но GridLayout в текущем ComponentOrientations для начала слева направо, then 3rd. grid is empty

затем только добавить JFrame#add(JPanel), в вашем случае

add(header);
0 голосов
/ 23 января 2012

A быстрый и грязный способ - поместить кнопку [ или контейнер, немедленно оборачивающий кнопку, если вы хотите добавить другие компоненты справа рядом с вашей кнопкой ].в контейнере, использующем BorderLayout и используем ограничение макета BorderLayout.EAST для этой кнопки [ или контейнера-оболочки ].

...