/** @author Scott Marshall @author University of Glasgow, MSc IT Project 2001 @author Building an OnLine Course in Computing Fundamentals */ package ukacgla_TruthTable; import ukacgla_ATT.*; import javax.swing.border.*; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.DefaultCellEditor; import javax.swing.JScrollPane; import javax.swing.JFrame; import javax.swing.SwingUtilities; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.TableColumn; import java.util.*; /** Provides GUI for Student input.*/; public class Ex01_TableUI extends TableUI{ public Ex01_TableUI (Ex01_frameMaker g){ super(g); gui = g; noOfOutPuts = 3; } /** This method generates the JInternal Frames to display the exercise, creates the GUI, then creates the truth table and marker to determine correct answers. */ protected void createExercise() { //delete old frames if (tableFrame != null){ gui.closeFrame(tableFrame); tableFrame = null; } if (diagram != null){ diagram.closeFrame(); diagram = null; } //make a new JInternal frame to hold the truth table tableFrame = gui.mkFrame("Truth Table", false, true,5,5, gui.getInternalFrameWidth(),gui.getInternalFrameHeight()); gui.addFrame(tableFrame); tableFrame.setVisible(true); tableFrame.revalidate(); //create new random numbers random.genRandom(); //create new circuit diagram and put on JInternalFrame diagram = new Ex01_Graphics(gui, random); //set up container and constraints contentPane = tableFrame.getContentPane(); GridBagLayout gridbag = new GridBagLayout(); contentPane.setLayout(gridbag); GridBagConstraints c = new GridBagConstraints(); //--------------- TABLE ------------------------------------------- //set data for table model data = setTableData(); columnNames = getColumnNames(); //make the table truthTable = mkTable(); c = mkConstraints(0,0,GridBagConstraints.NONE,8,6,0.0,0.0, GridBagConstraints.NORTHWEST,20,0); gridbag.setConstraints(truthTable,c); contentPane.add(truthTable); //--------------- CHECKBOX PANEL ---------------------------------- Container checkBoxPanel; if (colTitle.size()<8) checkBoxPanel = new Box(BoxLayout.Y_AXIS); else checkBoxPanel = new JPanel(new GridLayout(8,2)); checkBox = new JCheckBox[17]; listener = new cbListener(); for (int i = 0; i