Расположение JPanel в окне с помощью FlowLayout

119
26 ноября 2018, 06:20

Подскажите, как переместить JPanel с середины сверху (по умолчанию) влево по середине? GridLayout хранит в себе поле кнопок 3х3 - все это содержится в panel, я добавил еще одну панель (p) и поставил FlowLayout.Left, но все равно не получилось. Я думаю, что мне нужно компоновать Layoutы, но я не знаю как. Код:

 package res;
import javax.swing.*;
import java.awt.*;
public class Source extends JPanel {
    private JPanel panel, p;
    private  JButton b1, b2, b3, b4, b5, b6, b7, b8, b9;
    //private char x1, x2, x3, y1, y2, y3, z1, z2, z3;
    private boolean gameInit, playerWon, compWon;
    public Source(){
        setBackground(Color.gray);
        field();
    }
    public void field(){
        panel = new JPanel();
        b1 = new JButton();
        b2 = new JButton();
        b3 = new JButton();
        b4 = new JButton();
        b5 = new JButton();
        b6 = new JButton();
        b7 = new JButton();
        b8 = new JButton();
        b9 = new JButton();
        panel.setPreferredSize(new Dimension(300,300));
        panel.setLayout(new GridLayout(3, 3));
        panel.add(b1);
        panel.add(b2);
        panel.add(b3);
        panel.add(b4);
        panel.add(b5);
        panel.add(b6);
        panel.add(b7);
        panel.add(b8);
        panel.add(b9);
        add(panel);
        p = new JPanel();
        p.setBackground(Color.BLACK);
        p.setLayout(new FlowLayout(FlowLayout.LEFT));
        p.add(panel);
        add(p);
    }
}

UPD: BorderLayout не работает в строке p.setLayout(new FlowLayout(FlowLayout.LEFT)); (Вместо FlowLayout).

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

Answer 1

Все оказалось просто: Source стремиться стать JPanel, поэтому в public Source(){} мы должны описать, как себя будут вести объекты на нем. Вообщем дописываем setLayout(new FlowLayout(FlowLayout.LEFT)); и все

READ ALSO
Сумма одинаковых чисел Java [закрыт]

Сумма одинаковых чисел Java [закрыт]

Есть задача на Java (пока под консоль): Пользователю предлагается вводить числа в диапазоне от 1 до 100 до тех пор, пока не надоестКогда пользователь...

163
Для чего AccessType.FIELD и AccessType.PROPERTY в @Access?

Для чего AccessType.FIELD и AccessType.PROPERTY в @Access?

Для чего эти аннотации, и какие плюсы и минусы AccessTypeFIELD и AccessType

206
NotificationListenerService иногда перестает работать

NotificationListenerService иногда перестает работать

Не знаю при каких условиях, но иногда перестает работать мой сервис по отлову уведомленийВот код:

164