If the user doesn't move the slider, JOptionPane.getInputValue() correctly returns JOptionPane.UNINITIALIZED_VALUE.
import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class JSliderOnJOptionPane { public static void main(final String[] args) { JFrame parent = new JFrame(); JOptionPane optionPane = new JOptionPane(); JSlider slider = getSlider(optionPane); optionPane.setMessage(new Object[] { "Select a value: ", slider }); optionPane.setMessageType(JOptionPane.QUESTION_MESSAGE); optionPane.setOptionType(JOptionPane.OK_CANCEL_OPTION); JDialog dialog = optionPane.createDialog(parent, "My Slider"); dialog.setVisible(true); System.out.println("Input: " + optionPane.getInputValue()); } static JSlider getSlider(final JOptionPane optionPane) { JSlider slider = new JSlider(); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { JSlider theSlider = (JSlider) changeEvent.getSource(); if (!theSlider.getValueIsAdjusting()) { optionPane.setInputValue(new Integer(theSlider.getValue())); } } }; slider.addChangeListener(changeListener); return slider; } }