if ( source.getName().equals("sliderA") ) textA.setText( source.getValue() + " " ); if ( source.getName().equals("sliderB") ) textB.setText( source.getValue() + " " );
Hier ist das vollständige (aber nutzlose) Programm. Wenn wir den Slider betätigen, ändert sich der ausgegebenen Wert in seinem Textfeld.
Einige interessante Punkte sind blau dargestellt.
Um Change-Events zu verwenden, importieren wir
javax.swing.event.*
Jeder Slider hat eine bevorzugte Größe gesetzt mit setPreferredSize()
.
Ein besser ausgearbeitetes Programm würde
dasselbe Dimension
-Objekt bei jedem
Aufruf verwenden und würde eher final int
Das Layout hängt von der Größe des Frames und der Komponenten ab. Das Gruppieren der Komponenten in Panels wäre besser.
import java.awt.* ; import java.awt.event.*; import javax.swing.*; import javax.swing.event.* ; public class SliderFive extends JFrame implements ChangeListener { JSlider sliderA, sliderB; JTextField textA, textB; public SliderFive() { setTitle( "Change Listener" ); setDefaultCloseOperation( EXIT_ON_CLOSE ); sliderA = new JSlider( JSlider.HORIZONTAL, 0, 1000, 400); sliderA.setMajorTickSpacing( 100 ); sliderA.setMinorTickSpacing( 50 ); sliderA.setPaintTicks( true ); sliderA.setPaintLabels( true ); sliderA.setPreferredSize( new Dimension(300,50) ) ; sliderA.addChangeListener( this ); sliderA.setName("sliderA"); textA = new JTextField( 4 ); textA.setText( sliderA.getValue() + " " ); sliderB = new JSlider( JSlider.HORIZONTAL, 0, 1000, 400 ); sliderB.setMajorTickSpacing( 100 ); sliderB.setMinorTickSpacing( 50 ); sliderB.setPaintTicks( true ); sliderB.setPaintLabels( true ); sliderB.setPreferredSize( new Dimension(300,50) ) ; sliderB.addChangeListener( this ); sliderB.setName("sliderB"); textB = new JTextField( 4 ); textB.setText( sliderB.getValue() + " " ); // Frame setLayout( new FlowLayout() ); add( textA ); add( sliderA ); add( textB ); add( sliderB ); } public void stateChanged( ChangeEvent evt ) { JSlider source; source = (JSlider)evt.getSource(); if ( source.getName().equals("sliderA") ) textA.setText( source.getValue() + " " ); if ( source.getName().equals("sliderB") ) textB.setText( source.getValue() + " " ); } public static void main ( String[] args ) { SliderFive theApp = new SliderFive() ; theApp.setSize( 400, 150 ); theApp.setResizable( false ); theApp.setVisible( true ); } }
(Rückblick: ) Wie viele Change-Events werden erzeugt, wenn der Anwender den Schieberegler von einem Wert zu einem anderen zieht.