package genius.gui.uncertainty; import java.awt.BorderLayout; import java.awt.Dimension; import java.util.Hashtable; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import genius.gui.panels.LabelAndComponent; public class PerturbationPanel extends JPanel{ private PerturbationModel model; private LabelAndComponent panel; private JSlider slider; private JLabel perturbationLabel = new JLabel("0"); public PerturbationPanel(PerturbationModel model) { this.model = model; setLayout(new BorderLayout()); slider = createSlider(); LabelAndComponent sliderPanel = new LabelAndComponent("Set Perturbation", slider); JPanel centerPanel = new JPanel(); centerPanel.add(sliderPanel,BorderLayout.CENTER); centerPanel.add(perturbationLabel,BorderLayout.EAST); add(centerPanel,BorderLayout.CENTER); this.setVisible(true); } private JSlider createSlider() { slider = new JSlider(JSlider.HORIZONTAL,0,100,1); slider.setMajorTickSpacing( 1 ); slider.setMinorTickSpacing( 2 ); Hashtable sliderLabelsTable = new Hashtable(); sliderLabelsTable.put( 0 , new JLabel("0") ); sliderLabelsTable.put( 2 , new JLabel("0.2") ); sliderLabelsTable.put( 4 , new JLabel("0.4") ); sliderLabelsTable.put( 6 , new JLabel("0.6") ); sliderLabelsTable.put( 8 , new JLabel("0.8") ); sliderLabelsTable.put( 10 , new JLabel("1") ); slider.setPreferredSize(new Dimension(200, 200)); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { perturbationLabel.setText(String.valueOf((double) slider.getValue() / 100)); model.getPerturbationBox().setText(perturbationLabel.getText()); } }); return slider; } public LabelAndComponent getPanel() { return panel; } public JSlider getSlider() { return slider; } }