Re: Trouble setting JSlider position
e_matthes@hotmail.com wrote:
Hello everyone,
<code snipped>
perhaps a mouseListener might get you what you want
import javax.swing.*;
import javax.swing.event.*;
class SliderSnapTester extends JFrame //implements ChangeListener
{
JSlider sliderOne;
JSlider sliderTwo;
JTextField sliderOneDisplay = new JTextField(3);
JTextField sliderTwoDisplay = new JTextField(3);
public SliderSnapTester()
{
super("Slider Snap Tester");
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel wholePanel = new JPanel();
BoxLayout wholePanelLayout = new
BoxLayout(wholePanel,BoxLayout.Y_AXIS);
wholePanel.setLayout(wholePanelLayout);
buildSliders();
JPanel sliderOnePanel = new JPanel();
BoxLayout sliderOnePanelLayout = new
BoxLayout(sliderOnePanel,BoxLayout.X_AXIS);
sliderOnePanel.setLayout(sliderOnePanelLayout);
sliderOnePanel.add(sliderOne);
sliderOnePanel.add(sliderOneDisplay);
JPanel sliderTwoPanel = new JPanel();
BoxLayout sliderTwoPanelLayout = new
BoxLayout(sliderTwoPanel,BoxLayout.X_AXIS);
sliderTwoPanel.setLayout(sliderTwoPanelLayout);
sliderTwoPanel.add(sliderTwo);
sliderTwoPanel.add(sliderTwoDisplay);
wholePanel.add(sliderOnePanel);
wholePanel.add(sliderTwoPanel);
sliderOneDisplay.setText("" + sliderOne.getValue() );
sliderTwoDisplay.setText("" + sliderTwo.getValue() );
getContentPane().add(wholePanel);
}
private void checkSliderBounds()
{
int sliderTwoValue = sliderTwo.getValue();
int lowerBound = sliderOne.getValue() + 1;// Lowest allowed value
for slider two.
if (sliderTwoValue < lowerBound)
{
sliderTwo.setValue(lowerBound);
}
//sliderTwoDisplay.setText("" + sliderTwoValue);
sliderTwoDisplay.setText("" + sliderTwo.getValue());
sliderOneDisplay.setText("" + sliderOne.getValue());
}
private void buildSliders()
{
sliderOne = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);
sliderTwo = new JSlider(JSlider.HORIZONTAL, 0, 100, 75);
sliderOne.setMajorTickSpacing(25);
sliderOne.setMinorTickSpacing(5);
sliderOne.setPaintTicks(true);
sliderOne.setPaintLabels(true);
sliderTwo.setMajorTickSpacing(25);
sliderTwo.setMinorTickSpacing(5);
sliderTwo.setPaintTicks(true);
sliderTwo.setPaintLabels(true);
//sliderOne.addChangeListener(this);
//sliderTwo.addChangeListener(this);
MyMouseListener listener = new MyMouseListener();
sliderOne.addMouseListener(listener);
sliderTwo.addMouseListener(listener);
}
class MyMouseListener extends java.awt.event.MouseAdapter
{
public void mouseReleased(java.awt.event.MouseEvent me)
{
checkSliderBounds();
}
}
public static void main(String[] arguments) {new
SliderSnapTester().setVisible(true);}
}