Сейчас происходит то, что они растягиваются горизонтально.
В дополнение к предложениям @ 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());