Java BorderLayout не работает, JPanels не будет двигаться так, как я хочу, чтобы они - PullRequest
0 голосов
/ 05 мая 2018

По какой-то причине макет границы в моем коде не работает, когда я запускаю программу, два JPanel компонента выглядят как это , когда я хочу, чтобы два белых квадрата были вверху рядом с друг с другом.

image

В настоящее время я создаю программу, в которой я добавлю 9 квадратов (панелей), а затем помещу в них изображения, так что это 3 на 3 рядом с моей панелью кнопок. Однако я только начал с двух квадратов и даже не могу их правильно расположить, они зафиксированы в центре, и когда я добавляю еще один JPanel, он автоматически идет рядом с двумя, которые я уже положил в центр ,

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

Как создать требуемый макет и выравнивание панелей изображений?

ГЛАВНЫЙ КЛАСС

public static void main(String[] args) {
        JFrame application = new JFrame ("Call of Traders");

        GUI graphicalInterface = new GUI();  
        application.add(graphicalInterface);   

        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
        application.setLocation(200,200);
        application.pack();
        application.setVisible(true); 
        application.setResizable(false);
    }
}

ПОДКЛАСС

public class GUI extends JPanel implements ActionListener {

    private JButton AddChairBTN = new JButton();
    private JButton AddTableBTN = new JButton();
    private JButton AddDeskBTN = new JButton();
    private JButton NewCalcBTN = new JButton();
    private JPanel buttonPanel;
    private JPanel imagePanel;
    private JPanel imagePanel2;
    private Chair customerChair = new Chair();
    private Table customerTable = new Table();
    private Desk customerDesk = new Desk();

    GUI() {
        //create button panel
        buttonPanel = new JPanel();
        buttonPanel.setPreferredSize(new Dimension(100, 300));
        buttonPanel.setOpaque(true);
        buttonPanel.setBackground(Color.white);
        imagePanel = new JPanel(new BorderLayout());
        imagePanel.setPreferredSize(new Dimension(100, 100));
        imagePanel.setOpaque(true);
        imagePanel.setBackground(Color.white);
        imagePanel2 = new JPanel(new BorderLayout());
        imagePanel2.setPreferredSize(new Dimension(100, 100));
        imagePanel2.setOpaque(true);
        imagePanel2.setBackground(Color.white);

        AddChairBTN = new JButton();
        //add action listener to each button
        AddChairBTN.addActionListener(this);
        //set button size
        AddChairBTN.setPreferredSize(new Dimension(100, 50));
        //set text for each button
        AddChairBTN.setText("Add Chair");
        AddChairBTN.setToolTipText("press to add a Chair");
        //add buttons to gui
        buttonPanel.add(AddChairBTN);

        AddTableBTN = new JButton();
        //add action listener to each button
        AddTableBTN.addActionListener(this);
        //set button size
        AddTableBTN.setPreferredSize(new Dimension(100, 50));
        //set text for each button
        AddTableBTN.setText("Add Table");
        AddTableBTN.setToolTipText("press to add a Table");
        //add buttons to gui
        buttonPanel.add(AddTableBTN);

        AddDeskBTN = new JButton();
        //add action listener to each button
        AddDeskBTN.addActionListener(this);
        //set button size
        AddDeskBTN.setPreferredSize(new Dimension(100, 50));
        //set text for each button
        AddDeskBTN.setText("Add Desk");
        AddDeskBTN.setToolTipText("press to add a Desk");
        //add buttons to gui
        buttonPanel.add(AddDeskBTN);

        NewCalcBTN = new JButton();
        //add action listener to each button
        NewCalcBTN.addActionListener(this);
        //set button size
        NewCalcBTN.setPreferredSize(new Dimension(100, 50));
        //set text for each button
        NewCalcBTN.setText("Calculate");
        NewCalcBTN.setToolTipText("press to find out the total");
        //add buttons to gui
        buttonPanel.add(NewCalcBTN);

        //Add all panels to main containter panel and add that to the window  
        this.add(buttonPanel);
        this.add(imagePanel, BorderLayout.NORTH);
        this.add(imagePanel2, BorderLayout.SOUTH);
    }
}

1 Ответ

0 голосов
/ 05 мая 2018

Похоже, вы хотите достичь чего-то вроде этого:

image

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

enter image description here

...