|
TruthTableQuiz
TruthTableQuiz.java
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.border.*;
public class TruthTableQuiz extends JApplet {
boolean isStandalone = false;
int theSeed;
Box topBox=new Box(BoxLayout.Y_AXIS);
JPanel nlPanel = new JPanel();
JLabel numLitsLabel=new JLabel("Literals:");
String [] nl={"1","2","3","4","5"};
JComboBox numLitsBox=new JComboBox(nl);
JLabel diffLabel=new JLabel("Difficulty:");
String [] diff=
{"trivial","easy","medium","hard","very hard","insane","as if"};
JComboBox diffBox=new JComboBox(diff);
JPanel ButtonPanel = new JPanel();
JButton MeTry = new JButton("Try One"); // for NORTH
JButton CheckAnswer = new JButton("Check Answer"); // for NORTH
JPanel CenterPanel = new JPanel(); // CENTER
TruthTable theTable= new TruthTable(); // for CENTER
JPanel Bottom=new JPanel(new FlowLayout()); // for SOUTH
JTextArea Message=new JTextArea("",4,24);
/**Get a parameter value*/
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
/**Initialize the applet*/
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**Component initialization*/
private void jbInit() throws Exception {
this.setSize(new Dimension(400,450));
MeTry.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
MeTry_actionPerformed(e); } });
diffBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
diffBox_actionPerformed(e); } });
numLitsBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
numLitsBox_actionPerformed(e); } });
CheckAnswer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
CheckAnswer_actionPerformed(e); } });
ButtonPanel.add(MeTry, null);
ButtonPanel.add(CheckAnswer);
nlPanel.add(numLitsLabel);
nlPanel.add(numLitsBox);
nlPanel.add(diffLabel);
nlPanel.add(diffBox);
topBox.add(nlPanel);
topBox.add(ButtonPanel);
CenterPanel.add(theTable);
Bottom.add(Message);
this.getContentPane().add(topBox, BorderLayout.NORTH);
this.getContentPane().add(CenterPanel, BorderLayout.CENTER);
this.getContentPane().add(Bottom, BorderLayout.SOUTH);
Message.setBorder(BorderFactory.createEtchedBorder());
Message.setEditable(false);
Message.setRows(2);
Message.setLineWrap(true);
Message.setWrapStyleWord(true);
Message.setText("Enter your guesses in the last column.\n"+
"Click 'Check My Answer' when you are done.");
theTable.setVisible(false);
CenterPanel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(), "",TitledBorder.CENTER,
TitledBorder.ABOVE_TOP,new Font("Lucida Sans",Font.PLAIN,16)));
CenterPanel.validate();
CheckAnswer.setEnabled(false);
FontFixer.setUIFont("Lucida Sans");
SwingUtilities.updateComponentTreeUI(this);
}
void numLitsBox_actionPerformed(ActionEvent e) {
CheckAnswer.setEnabled(false);
MeTry.setEnabled(true);
theTable.setVisible(false);
}
void diffBox_actionPerformed(ActionEvent e) {
CheckAnswer.setEnabled(false);
MeTry.setEnabled(true);
theTable.setVisible(false);
}
void MeTry_actionPerformed(ActionEvent e) {
theSeed=(int) (100000*Math.random());
int numLits=1+numLitsBox.getSelectedIndex();
int diff=diffBox.getSelectedIndex();
if(diffBox.getSelectedItem().equals("as if"))
diff+=3;
CenterPanel.remove(theTable);
theTable=new TruthTable();
theTable.getRandomTable(theSeed,numLits,diff);
CenterPanel.add(theTable);
theTable.setVisible(true);
int width=(int) Math.min(theTable.getPreferredSize().getWidth(),
CenterPanel.getWidth());
int height=(int) Math.min(theTable.getPreferredSize().getHeight(),
CenterPanel.getHeight()-40);
theTable.setPreferredSize(new Dimension(width,height));
Message.setText("Enter your guesses in the last column.\n"+
"Click 'Check My Answer' when you are done.");
CenterPanel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"\u03A3 = "+theTable.getProp(),
TitledBorder.CENTER, TitledBorder.ABOVE_TOP,
new Font("Lucida Sans",Font.PLAIN,16),Color.blue));
CenterPanel.validate();
CheckAnswer.setEnabled(true);
//MeTry.setEnabled(false); // so you can't just keep pinking new ones
theTable.setVisible(true);
}
void CheckAnswer_actionPerformed(ActionEvent e) {
int numCorrect=theTable.gradeAnswer();
Message.setText("You got "+numCorrect+" out of "+
theTable.tTable.getRowCount() +" correct answers.\n");
Message.append("The correct answers are given above.\n");
Message.append("You got the green ones correct.");
CenterPanel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"\u03A3 = "+theTable.getProp(),
TitledBorder.CENTER, TitledBorder.ABOVE_TOP,
new Font("Lucida Sans",Font.PLAIN,16)));
CheckAnswer.setEnabled(false);
MeTry.setEnabled(true);
MeTry.setText("Try Again");
}
}
|