Как использовать CardLayout с несколькими JPanels? - PullRequest
0 голосов
/ 06 декабря 2018

Первый экран разделен на 2 JPanels с помощью JSplitPane.Как мне переключиться на другой экран, который настроен так же.Я попытался поместить первые 2 JPanels в контейнер панели, но это не сработало.Затем я попытался оставить их отдельно без контейнера, но потом появилась только вторая нижняя панель.Как использовать cardLayout для переключения между двумя отформатированными панелями.Если три - это другой способ сделать это, пожалуйста, скажите, потому что CardLayout слишком сложно использовать, когда все панели должны быть отформатированы определенным образом.

public class Quizlet extends JFrame implements ActionListener  {

public JPanel Container, FTop, FBottom,QTop,QBottom;
public JScrollPane Scroll;
public JSplitPane FirstSplit,QuesSplit,FinalSplit;
public JTextArea Text;
public JButton Start, Next, Finish;
public JTextField Answer;
public JLabel Hello,Ans;
CardLayout Switch = new CardLayout();


public Quizlet () {

    Container = new JPanel();   
    Container.setLayout(Switch);
    Container.add(FTop, null);
    Container.add(FBottom,null);
    Switch.show(FTop,null);
    Switch.show(QBottom, null);


    FTop = new JPanel(new BorderLayout());


    Hello = new JLabel("Please Click start to begin");
    FTop.add(Hello, BorderLayout.CENTER);

    FBottom = new JPanel(new BorderLayout());


    Start = new JButton("Start Session");
    Start.addActionListener(this);

    FBottom.add(Start,BorderLayout.CENTER);

    FirstSplit = new JSplitPane();
    FirstSplit.setTopComponent(FTop);                  // at the top we want our "topPanel"
    FirstSplit.setBottomComponent(FBottom); 

    add(FirstSplit);
    FirstSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);  
    FirstSplit.setDividerLocation(200);                    
    FirstSplit.setTopComponent(FTop);                  
    FirstSplit.setBottomComponent(FBottom); 

    //Second Screen top component

    QTop = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();

    Ans = new JLabel("Answer");
    c.gridx=0;
    c.gridy=0;
    QTop.add(Ans, c);


    Answer = new JTextField(12);
    c.gridx=0;
    c.gridy=1;
    QTop.add(Answer, c);
    //Second Screen Bottom Component
    QBottom = new JPanel(new BorderLayout());
    Next = new JButton("Next Question");
    QBottom.add(Next,BorderLayout.CENTER);

    //Second screen Split
    QuesSplit = new JSplitPane();
    QuesSplit.setTopComponent(QTop);                  
    QuesSplit.setBottomComponent(QBottom); 

    add(QuesSplit);
    QuesSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);  
    QuesSplit.setDividerLocation(200);                    
    QuesSplit.setTopComponent(QTop);                  
    QuesSplit.setBottomComponent(QBottom); 



    setSize(500,500);
    setVisible(true);
    setTitle("The Quiz");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();


}
public void actionPerformed (ActionEvent e) {
    if(e.getSource()==Start) {
        Switch.show(QTop, null);
        Switch.show(QBottom, null);
    }
}

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Quizlet show = new Quizlet();
            }
        });
    }
}
...