Как сделать цикл jPanel в jFrame? - PullRequest
0 голосов
/ 13 февраля 2019

Могу ли я знать, почему моя jPanel не появляется в jFrame?Я хочу, чтобы в jFrame появилось 5 синих jPanel, но почему в моем jFrame появилась только 1 синяя jPanel?Спасибо за помощь!

public class NewJFrame2 extends javax.swing.JFrame {

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
/**
 * Creates new form NewJFrame2
 */
public NewJFrame2() {
    initComponents();
    JPanel[] panelArray = new JPanel[5];
    JButton btnArray[] = new JButton[5];
    for(int i = 0; i<5;i++)
    {
        panelArray[i] = new JPanel();
        //panelArray[i].setVisible(true);
        System.out.println(panelArray[i]);
        javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
        panelArray[i].setBackground(Color.YELLOW);
        panelArray[i].setBorder(border);
        frame.getContentPane().add(panelArray[i]);

    }

    frame.setSize(new Dimension(500, 400));

    frame.setLocationRelativeTo(null);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setTitle("A Simple JFrame");

    frame.setVisible(true);
}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Использование контейнера JPanel с BoxLayout - см. Комментарии ниже для получения дополнительной информации:

    initComponents();
    JPanel[] panelArray = new JPanel[5];
    JButton btnArray[] = new JButton[5];
    JPanel container = new JPanel(); // Container JPanel   
    container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS)); // With a BoxLayout
    for (int i = 0; i < 5; i++) {
        panelArray[i] = new JPanel();
        //panelArray[i].setVisible(true);
        System.out.println(panelArray[i]);
        javax.swing.border.Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
        panelArray[i].setBackground(Color.YELLOW);
        panelArray[i].setBorder(border);
        container.add(panelArray[i]);   // Adding 5 JPanels to container JPanel
    }
    frame.getContentPane().add(container); // Adding container JPanel to JFrame
    frame.setSize(new Dimension(500, 400));
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("A Simple JFrame");
    frame.setVisible(true);
0 голосов
/ 13 февраля 2019

Как уже упоминалось в комментариях, вам нужен LayoutManager.

В настоящее время проблема заключается в том, что вы добавляете все пять панелей в одно и то же место на вашем фрейме.Чтобы решить эту проблему, вам нужно предоставить структуру кадра, чтобы связать разные координаты с разными областями.

Этот ответ содержит хорошую отправную точку для начала игры с макетами вДжава.

...