0

我有下面的代码将 JPanel 添加到另一个 JPanel 不显示 ui。

我尝试将 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();
}

我在用于更新 JLabel 的 user_ui 类中有这个方法。但是,每次我执行该功能时,整个面板(mainPanel)都会消失。

public void setID(final String id) {

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

}
4

2 回答 2

2

您必须revalidate()在向 mainPanel 添加新组件后调用它,因为这会告诉容器布局管理器重新布局所有组件。此外,mainPanel 必须使用有利于允许动态添加组件的布局管理器(即,不是 GroupLayout)。有时您还必须repaint()在重新验证后调用,尤其是在移除组件时。

于 2013-11-17T07:08:59.487 回答
0

尝试这个

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();
}
于 2013-11-17T06:56:36.230 回答