JPanel не отображается

У меня есть код ниже, чтобы добавить JPanel к другому JPanel, пользовательский интерфейс не отображается.

Я попытался изменить User_UI только на JButton, но он также не отображается.

Это кажется довольно прямолинейным, я сделал ошибку?

private void startActionPerformed(java.awt.event.ActionEvent evt) {                                      
    userArray = new User_UI[9];
    for (int x = 0; x < 9; x++) {
        User_UI tmp = new User_UI();            // JPanel Object
        mainPanel.add(tmp);                     // Adding to a JPanel with  GridLayout            
    }
    validate();
}

У меня есть этот метод в моем классе user_ui, который я использовал для обновления JLabel. Однако каждый раз, когда я запускаю функцию, вся панель (mainPanel) исчезает.

public void setID(final String id) {

    System.out.println("ID SET to " + id);
    this.id = id;
    id_no.setText(id);

}

person sean    schedule 17.11.2013    source источник


Ответы (2)


Вы должны вызвать revalidate() на mainPanel после добавления в нее новых компонентов, так как это говорит менеджерам компоновки контейнеров перекомпоновать все компоненты. Кроме того, mainPanel должен использовать менеджер компоновки, позволяющий добавлять компоненты на лету (т. е. не GroupLayout). Иногда вы также должны вызывать repaint() после повторной проверки, особенно если компоненты удалены.

person Hovercraft Full Of Eels    schedule 17.11.2013
comment
Привет, я использовал validate * (. У меня есть другая проблема с пользовательским интерфейсом. Не могли бы вы мне помочь. Спасибо. - person sean; 17.11.2013
comment
@sean: Я бы хотел помочь тебе больше, но не знаю, как. Если бы вы могли создать и опубликовать sscce, это очень помогло бы нам лучше понять вашу проблему, а затем помогите найти решение. - person Hovercraft Full Of Eels; 17.11.2013

попробуй это

private void startActionPerformed(java.awt.event.ActionEvent evt) {                                      
    userArray = new User_UI[9];
    for (int x = 0; x < 9; x++) {
        User_UI tmp = new User_UI();            // JPanel Object
        mainPanel.add(tmp);                     // Adding to a JPanel with  GridLayout            
    }
    repaint();
}
person subash    schedule 17.11.2013
comment
Привет, перекрасочные работы! у меня есть другая проблема с пользовательским интерфейсом, не могли бы вы помочь мне взглянуть, пожалуйста, спасибо - person sean; 17.11.2013