我究竟做错了什么?更新面板/用作视图控制器

时间:2013-11-13 12:30:09

标签: java jpanel cardlayout

我打算将面板用作视图控制器容器。

//variables
CustomerSearch cs;
CardLayout cl;
string BUTTONPANEL="Page1";

设置变量

private void InitViews(){
    cl = new CardLayout(); 

    cs = new CustomerSearch();
    cl.addLayoutComponent(cs, BUTTONPANEL);
    ViewPanel.setLayout(cl);

    //cl.show(ViewPanel, BUTTONPANEL);   
}

按钮单击以更新视图:

    private void SearchBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          

    cl.show(ViewPanel, BUTTONPANEL);
    cs.repaint();
    ViewPanel.repaint();
}  

但是当事件被解雇时,什么都没发生? 谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

通常,您不会将组件添加到布局中。它们被添加到父组件,即使用布局的组件:

    private void initViews() {
        cl = new CardLayout(); 
        viewPanel.setLayout(cl);

        cs = new CustomerSearch();
        viewPanel.add(cs, BUTTONPANEL);
    }

本教程应该有所帮助:How to Use CardLayout

通常,变量,字段和方法以小写字母开头。类和接口以大写字母开头。

修改
在这种情况下不需要重绘,以下监听器应该这样做:

    private void SearchBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
        cl.show(viewPanel, BUTTONPANEL);
    }