import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SwingQuestionnaire extends JPanel implements ActionListener{
private JLabel titleLabel;
private JLabel questionNumLabel;
private JButton nextButton;
private JLabel questionLabel;
private JRadioButton jrbA;
private JRadioButton jrbB;
private JRadioButton jrbC;
private int score;
private int qNum = 0;
private Test[] test = new Test[3];
public SwingQuestionnaire() {
//construct components
JSeparator line1 = new JSeparator (JSeparator.HORIZONTAL);
ButtonGroup group = new ButtonGroup();
//int score;
initializeTest();
titleLabel = new JLabel ();
questionNumLabel = new JLabel();
questionLabel = new JLabel ();
jrbA = new JRadioButton ();
jrbB = new JRadioButton ();
jrbC = new JRadioButton ();
nextButton = new JButton ("NEXT");
setTest();
//adjust size and set layout
setPreferredSize (new Dimension (661, 558));
setLayout (null);
//add components
add (titleLabel);
add (questionNumLabel);
add (nextButton);
add (questionLabel);
group.add (jrbA);
group.add (jrbB);
group.add (jrbC);
add (jrbA);
add (jrbB);
add (jrbC);
add (line1);
//set component bounds (only needed by Absolute Positioning)
titleLabel.setBounds (20, 20, 100, 25);
questionNumLabel.setBounds (610, 20, 35, 20);
nextButton.setBounds (550, 515, 100, 25);
questionLabel.setBounds (240, 90, 200, 25);
jrbA.setBounds (165, 270, 100, 25);
jrbB.setBounds (165, 330, 100, 25);
jrbC.setBounds (165, 390, 215, 25);
nextButton.addActionListener(this);
}
public void actionPerformed(ActionEvent r){
if(r.getSource() == nextButton)
{
validateAnswer();
setTest();
}
}
public static void main (String[] args) {
JFrame frame = new JFrame ("Questionnaire");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add (new SwingQuestionnaire());
frame.pack();
frame.setVisible (true);
frame.setLocation (250,100);
frame.setResizable(false);
}
private void setTest()
{
titleLabel.setText("Question No. " + (qNum+1));
questionNumLabel.setText((qNum+1)+"/3");
questionLabel.setText(test[qNum].getQuestion());
jrbA.setText(test[qNum].getOptionA());
jrbB.setText(test[qNum].getOptionB());
jrbC.setText(test[qNum].getOptionC());
qNum++;
if(qNum == 3)
{
nextButton.setText("SUBMIT");
}
}
private void validateAnswer()
{
//provide code for validation
}
private void initializeTest()
{
test[0] = new Test("Question 1 to ask", "I like A", "I like B", "I like C", "I like B");
test[1] = new Test("Question 2 to ask", "I like A", "I like B", "I like C", "I like A");
test[2] = new Test("Question 3 to ask", "I like A", "I like B", "I like C", "I like C");
}
}