如何在抽象父类上正确实现CardLayout

时间:2019-07-12 14:19:57

标签: java swing abstract-class cardlayout

我试图动态更改包含表单的JPanel,因为用户单击不同的选项卡时,JPanel应该显示不同的表单字段。

我已经阅读了在JPanel上实现动态更改的最佳方法是使用cardLayout来控制Stack内部的所有Jpanel。

我不知道这是否是实现此目标的最佳方法,但是我所做的是制作一个名为FormPanel的抽象类,该抽象类将仅实现Form的大小,然后根据需要扩展该类,字段。

public class MainFrame extends JFrame {

   // private JTextArea textArea;
    private TextPanel textPanel;
    private ToolBar toolBar;
    private JPanel cards;
    private SearchPanel searchPanel;
    private AddNewCarPanel addNewCarPanel;

    public MainFrame(){
        super("CarShop");
        setLayout(new BorderLayout());

        //textArea = new JTextArea();
        toolBar = new ToolBar();
        textPanel = new TextPanel();
        searchPanel = new SearchPanel();
        addNewCarPanel = new AddNewCarPanel();
        cards = new JPanel(new CardLayout());
        cards.add(searchPanel,"search");
        cards.add(addNewCarPanel,"addNewCar");

        toolBar.setPanelListener(new PanelListeners(){

            @Override
            public void PanelChange(String text) {
               //textPanel.appendText(text);
                CardLayout cl =  (CardLayout) (cards.getLayout());
                cl.show(cards,text);
            }
        });

        add(cards,BorderLayout.WEST);
        add(textPanel,BorderLayout.CENTER);
        add(toolBar,BorderLayout.NORTH);
        //add(searchPanel,BorderLayout.WEST);
        this.setSize(800,600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}

所以我的主要目标是使用CardLayout在searchPanel和addNewCarPanel之间切换,我尝试了不同的解决方案,但是在实现上遇到了麻烦。

如果您认为有更好的方法来实现不同的表格,我将很高兴学习。

0 个答案:

没有答案