我试图动态更改包含表单的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之间切换,我尝试了不同的解决方案,但是在实现上遇到了麻烦。
如果您认为有更好的方法来实现不同的表格,我将很高兴学习。