JPanel: как добавить кнопки над таблицей? - PullRequest
2 голосов
/ 20 октября 2010
    JPanel panel = new JPanel();
    bigbutton = new JButton("Big Button");
    clearbutton = new JButton("Clear Page");
    resetbutton = new JButton("Start Over");
    finishbutton = new JButton("Finish");


    panel.add(sometable);
    return panel; 

сейчас происходит то, что они растягиваются горизонтально.Я хочу четыре кнопки по горизонтали и над столом.

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Установите макет панели на BorderLayout, добавьте кнопки в поле, добавьте блок на панель с ограничением BorderLayout.PAGE_START, добавьте таблицу с ограничением Borderlayout.CENTER.

1 голос
/ 20 октября 2010

Сейчас происходит то, что они растягиваются горизонтально.

В дополнение к предложениям @ tulskiy и @Andrew Thompson, возможно, будет полезно отметить, что макет по умолчанию JPanel равен FlowLayout, который размещает компоненты горизонтальный ряд.

Добавление:

изменить JPanel FlowLayout на BorderLayout или какой-либо другой макет?

Выбор макета отчасти является делом вкуса, но я бы объединил предложенные подходы, как показано в Как использовать панели инструментов . Обратите внимание, как ToolBarDemo расширяет JPanel, а затем вызывает конструктор суперкласса, чтобы указать BorderLayout():

public class ToolBarDemo extends JPanel implements ActionListener {
    ...
    public ToolBarDemo() {
        super(new BorderLayout());
        ...
        JToolBar toolBar = new JToolBar("Still draggable");
        addButtons(toolBar);
        ...
        setPreferredSize(new Dimension(450, 130));
        add(toolBar, BorderLayout.PAGE_START);
        add(sometable, BorderLayout.CENTER);
    }
    ...
}

Отсутствует расширение, просто используйте конструктор напрямую:

JPanel panel = new JPanel(new BorderLayout());

В качестве альтернативы используйте метод setLayout(), унаследованный от JPanel.

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...