Reputation: 31
This is output image When I try to press Q2 Or Q3 panel doesn't changes
This is image of arrangement of panels in gui
This is part of my code in which I am struggling . Please help.
public NewJFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
upperpanel = new javax.swing.JPanel();
qu1 = new javax.swing.JButton();
qu2 = new javax.swing.JButton();
qu3 = new javax.swing.JButton();
qu4 = new javax.swing.JButton();
qu5 = new javax.swing.JButton();
lowerpanel = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
parentpanel = new javax.swing.JPanel();
q1 = new javax.swing.JPanel();
question1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
jTextField5 = new javax.swing.JTextField();
jTextField6 = new javax.swing.JTextField();
q2 = new javax.swing.JPanel();
question2 = new javax.swing.JLabel();
jTextField7 = new javax.swing.JTextField();
jTextField8 = new javax.swing.JTextField();
jTextField9 = new javax.swing.JTextField();
jTextField10 = new javax.swing.JTextField();
jTextField11 = new javax.swing.JTextField();
jTextField12 = new javax.swing.JTextField();
q3 = new javax.swing.JPanel();
question3 = new javax.swing.JLabel();
jTextField13 = new javax.swing.JTextField();
jTextField14 = new javax.swing.JTextField();
jTextField15 = new javax.swing.JTextField();
jTextField16 = new javax.swing.JTextField();
jTextField17 = new javax.swing.JTextField();
jTextField18 = new javax.swing.JTextField();
q4 = new javax.swing.JPanel();
question4 = new javax.swing.JLabel();
jTextField19 = new javax.swing.JTextField();
jTextField20 = new javax.swing.JTextField();
jTextField21 = new javax.swing.JTextField();
jTextField22 = new javax.swing.JTextField();
jTextField23 = new javax.swing.JTextField();
jTextField24 = new javax.swing.JTextField();
q5 = new javax.swing.JPanel();
question5 = new javax.swing.JLabel();
jTextField25 = new javax.swing.JTextField();
jTextField26 = new javax.swing.JTextField();
jTextField27 = new javax.swing.JTextField();
jTextField28 = new javax.swing.JTextField();
jTextField29 = new javax.swing.JTextField();
jTextField30 = new javax.swing.JTextField();
private void qu1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q1");
}
private void qu2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q2");
}
private void qu3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q3");
}
private void qu4ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q4");
}
private void qu5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q5");
}
}
// Variables declaration - do not modify
}
Upvotes: 0
Views: 130
Reputation: 21710
You probably just forgot to add the ActionListener
,
qu1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
qu1ActionPerformed(ev);
}
});
but its quicker that I pass you an example of how card layout works (then debugging the parts of code you have submitted), I have tried to follow your code style (this is an example not your solution,so I have keept it to a minimum just 2 cards.
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class CardLayoutTest extends JFrame{
private static final long serialVersionUID = 1L;
final static String CARD_1 = "Card1";
final static String CARD_2 = "Card2";
private JPanel cardPanel;
public CardLayoutTest(){
super("CardLayoutTest");
initComponents();
}
private void initComponents() {
this.getContentPane().setLayout(new BorderLayout());
JButton btnCard1 = new JButton("Card1");
btnCard1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard1_ActionPerformed(ev);
}
});
JButton btnCard2 = new JButton("Card2");
btnCard2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard2_ActionPerformed(ev);
}
});
cardPanel = new JPanel(new CardLayout());
JPanel card1 = new JPanel();
card1.add(new JLabel("Card1"));
JPanel card2 = new JPanel();
card2.add(new JLabel("Card2"));
cardPanel.add(card1,CARD_1);
cardPanel.add(card2,CARD_2);
this.getContentPane().add(btnCard1,BorderLayout.NORTH);
this.getContentPane().add(btnCard2,BorderLayout.SOUTH);
this.getContentPane().add(cardPanel,BorderLayout.CENTER);
}
private void btnCard1_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_1);
}
private void btnCard2_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_2);
}
public static void main(String[] args) {
CardLayoutTest clt = new CardLayoutTest();
clt.pack();
clt.setLocationRelativeTo(null);
clt.setVisible(true);
}
}
Upvotes: 4