/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package thegrader; /** * * @author Mike */ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class GradingScheme extends JFrame { JPanel pan, bigPan; JList list; DefaultListModel mod; JButton okBtn, cancelBtn, applyBtn, addSchemeBtn, deleteSchemeBtn; private static class ValuePanel extends JPanel { JTextField symbol; JComboBox color; JTextField percentage; public ValuePanel() { symbol = new JTextField(); symbol.setPreferredSize(new Dimension(40, 22)); color = new JComboBox(); color.setPreferredSize(new Dimension(150, 22)); color.addItem("Black"); color.addItem("Red"); color.addItem("Orange"); color.addItem("Yellow"); color.addItem("Green"); color.addItem("Blue"); color.addItem("Violet"); color.addItem("White"); color.addItem("Custom..."); percentage = new JTextField(); percentage.setPreferredSize(new Dimension(40, 22)); add(symbol); add(color); add(percentage); } } public GradingScheme() { setResizable(false); JPanel buttons = new JPanel(), saveButtons = new JPanel(); list = new JList(mod = new DefaultListModel()); mod.addElement("Plus-Minus"); mod.addElement("Pass-Fail"); JScrollPane listScroll = new JScrollPane(list); listScroll.setPreferredSize(new Dimension(200, 80)); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setVisibleRowCount(4); list.setLayoutOrientation(JList.VERTICAL); pan = new JPanel(); bigPan = new JPanel(); GridLayout lay = new GridLayout(8, 2); JPanel mid = new JPanel(), top = new JPanel(); JTextField text = new JTextField(); text.setPreferredSize(new Dimension(200, 22)); mid.add(new JLabel("Scheme Name: ")); mid.add(text); buttons.setLayout(new BoxLayout(buttons, BoxLayout.Y_AXIS)); buttons.add(addSchemeBtn = new JButton("Add Scheme")); buttons.add(deleteSchemeBtn = new JButton("Delete Scheme")); top.add(listScroll, BorderLayout.CENTER); top.add(buttons, BorderLayout.EAST); setTitle("Manage Grading Schemes"); lay.setHgap(10); pan.setLayout(lay); bigPan.setLayout(new BoxLayout(bigPan, BoxLayout.Y_AXIS)); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); pan.add(new ValuePanel()); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); bigPan.add(top); bigPan.add(mid); JPanel labels = new JPanel(); labels.add(new JLabel("Symbol Color Percentage Symbol Color Percentage")); bigPan.add(labels); saveButtons.setLayout(new BoxLayout(saveButtons, BoxLayout.X_AXIS)); saveButtons.add(okBtn = new JButton("OK"), Component.LEFT_ALIGNMENT); saveButtons.add(cancelBtn = new JButton("Cancel"), Component.LEFT_ALIGNMENT); saveButtons.add(applyBtn = new JButton("Apply"), Component.LEFT_ALIGNMENT); bigPan.add(pan); bigPan.add(saveButtons); bigPan.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); add(bigPan); pack(); //Event listeners addSchemeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { mod.addElement("New Scheme"); } }); deleteSchemeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int ndx; if ((ndx = list.getSelectedIndex()) != -1) mod.remove(ndx); } }); okBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { GradingScheme.this.setVisible(false); } }); cancelBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { GradingScheme.this.setVisible(false); } }); } }