Schieberegler und analoge Anzeigen
JScrollBar
Schieberegler <ul><li>Unter Swing ersetzt  javax.swing.JScrollBar  die Klasse  java.awt.Scrollbar . </li></ul><ul><li>Dire...
JSlider
Die Klasse JSlider <ul><li>Ein  JSlider  lässt den Benutzer zwischen diskreten Werten mit einem Schieberegler wählen. </li...
Ein JSlider konstruieren <ul><li>JSlider js = new JSlider( JSlider.HORIZONTAL, </li></ul><ul><li>0, 30, startwert ); </li>...
Der  ChangeListener am JSlider <ul><li>Wird der Slider bewegt, sendet er  javax.swing.event.ChangeEvent -Objekte aus. </li...
Ein  SliderListener  <ul><li>class SliderListener implements ChangeListener { </li></ul><ul><li>  public void stateChanged...
Beschriftungen ändern <ul><li>Die Beschriftung der Werte kann man über ein  Dictionary  (Implementierung ist eine  Hashtab...
JProgressBar
Fortschrittsanzeige <ul><li>Eine lange Berechung sollte benutzerfreundlich mit einer Fortschrittsanzeige ausgestattet werd...
Die Klasse  JProgressBar  <ul><li>Ein Konstruktor von  JProgressBar  nimmt das Minimum und Maximum entgehen. </li></ul><ul...
ProgressMonitor
ProgressMonitor <ul><li>Ein  JProgressMonitor  ist ein Dialog, der eine Fortschrittsanzeige  d a r s t e l l t . </li></ul...
Das Aufgehen des Dialogs <ul><li>Damit verhindert wird, dass bei sehr kurzen Operationen (etwa eine ½ Sekunde) Benutzer du...
Abbruch <ul><li>Da ein  ProgressMonitor  ein echter Dialog ist, kann dieser abgebrochen werden. </li></ul><ul><ul><li>Dass...
Den Abbruch erkennen <ul><li>while( !pm.isCanceled() && ! fertig ) { </li></ul><ul><li>// Operation durchführen </li></ul>...
ProgressMonitorInputStream <ul><li>Ein  ProgressMonitorInputStream  ist eine Unterklasse von  java.io.FilterInputStream , ...
Professionelle IT-Qualifizierung
tutego über tutego <ul><li>Inhouse-Schulungen mit individualisierten Inhalten und Terminauswahl </li></ul><ul><li>190 Semi...
Unsere Themen
Unsere Themen
Nächste SlideShare
Wird geladen in …5
×

Schieberegler und analoge Anzeigen in Swing

1.612 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.612
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
531
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • #toc1
  • #toc2
  • #toc2
  • #toc2
  • #toc2
  • Schieberegler und analoge Anzeigen in Swing

    1. 1. Schieberegler und analoge Anzeigen
    2. 2. JScrollBar
    3. 3. Schieberegler <ul><li>Unter Swing ersetzt javax.swing.JScrollBar die Klasse java.awt.Scrollbar . </li></ul><ul><li>Direkt wird die Klasse jedoch selten verwendet. </li></ul><ul><li>Man nutzt vielmehr: </li></ul><ul><ul><li>JSlider . Schieberegler mit Beschriftung. </li></ul></ul><ul><ul><li>JScrollPane . Nimmt eine Komponente auf und versieht sie mit Schiebereglern. </li></ul></ul><ul><ul><li>JProgressBar . Fortschrittsbalken. </li></ul></ul>
    4. 4. JSlider
    5. 5. Die Klasse JSlider <ul><li>Ein JSlider lässt den Benutzer zwischen diskreten Werten mit einem Schieberegler wählen. </li></ul><ul><ul><li>Auf diese Weise ist man unanfälliger gegen Eingabefehler. </li></ul></ul><ul><li>Die Werte sind gebunden an ein Minimum (standardmäßig 0) und Maximum (100). </li></ul><ul><li>Leistungen: </li></ul><ul><ul><li>Ein JSlider ist entweder horizontal oder vertikal angeordnet. </li></ul></ul><ul><ul><li>Orientierungslinien (Ticks) können gezeichnet werden. </li></ul></ul><ul><ul><li>Die Beschriftung lässt sich ändern. </li></ul></ul>
    6. 6. Ein JSlider konstruieren <ul><li>JSlider js = new JSlider( JSlider.HORIZONTAL, </li></ul><ul><li>0, 30, startwert ); </li></ul><ul><li>js.setMajorTickSpacing( 10 ); </li></ul><ul><li>js.setMinorTickSpacing( 1 ); </li></ul><ul><li>js.setPaintTicks( true ); </li></ul><ul><li>js.setPaintLabels( true ); </li></ul><ul><li>js.addChangeListener( new SliderListener() ); </li></ul>
    7. 7. Der ChangeListener am JSlider <ul><li>Wird der Slider bewegt, sendet er javax.swing.event.ChangeEvent -Objekte aus. </li></ul><ul><ul><li>Ein javax.swing.event.ChangeListener fängt diese ab. </li></ul></ul><ul><li>Wird der Slider nur bewegt, aber vom Benutzer noch nicht losgelassen, liefert getValueIsAdjusting() den Wert true . </li></ul>
    8. 8. Ein SliderListener <ul><li>class SliderListener implements ChangeListener { </li></ul><ul><li> public void stateChanged( ChangeEvent e ) { </li></ul><ul><li> JSlider source = (JSlider) e.getSource(); </li></ul><ul><li>if ( !source.getValueIsAdjusting() ) { </li></ul><ul><li> // Fertig </li></ul><ul><li> int result = source.getValue(); </li></ul><ul><li> } else { </li></ul><ul><li>// Benutzer bewegt noch </li></ul><ul><li> } </li></ul><ul><li> } </li></ul><ul><li>} </li></ul>
    9. 9. Beschriftungen ändern <ul><li>Die Beschriftung der Werte kann man über ein Dictionary (Implementierung ist eine Hashtable) festlegen. </li></ul><ul><ul><li>Den Werten des JSliders wird dabei ein darzustellendes Objekt zugeordnet. </li></ul></ul><ul><li>Dictionary map = new Hashtable(); </li></ul><ul><li>map.put( new Integer(0), new JLabel(&quot;Stopp&quot;) ); </li></ul><ul><li>map.put( new Integer(30), new JLabel(&quot;Langsam&quot;) ); </li></ul><ul><li>map.put( new Integer(100),new JLabel(&quot;Schnell&quot;) ); </li></ul><ul><li>jslider.setLabelTable( map ); </li></ul><ul><li>jslider.setPaintLabels( true ); </li></ul>
    10. 10. JProgressBar
    11. 11. Fortschrittsanzeige <ul><li>Eine lange Berechung sollte benutzerfreundlich mit einer Fortschrittsanzeige ausgestattet werden. </li></ul><ul><li>Ist das Ende (oder der Fortschritt) nicht bekannt, so kann die Anzeige in ein „indeterminate mode” wechseln. </li></ul><ul><li>Eine Alternative dazu sind wartende Cursor (Sanduhren). </li></ul>
    12. 12. Die Klasse JProgressBar <ul><li>Ein Konstruktor von JProgressBar nimmt das Minimum und Maximum entgehen. </li></ul><ul><li>JProgressBar progressBar; </li></ul><ul><li>progressBar = new JProgressBar( 0, max ); </li></ul><ul><li>progressBar.setValue( 0 ); // aktueller Wert </li></ul><ul><li>progressBar.setStringPainted( true ); </li></ul><ul><li>setStringPainted() führt zur Anzeige der Prozentzahl. </li></ul><ul><li>Es kann auch ein eigener String angezeigt werden. </li></ul><ul><li>if ( hälfteIstUm ) </li></ul><ul><li> progressBar.setString( &quot;Halbzeit&quot; ); </li></ul>
    13. 13. ProgressMonitor
    14. 14. ProgressMonitor <ul><li>Ein JProgressMonitor ist ein Dialog, der eine Fortschrittsanzeige d a r s t e l l t . </li></ul><ul><li>progressMonitor = new ProgressMonitor( </li></ul><ul><li> parentComponent, // Vater </li></ul><ul><li>&quot;Das dauert...&quot;, // Beschreibung </li></ul><ul><li>&quot;&quot;, 0, maximum ); // Notiz, Min, Max </li></ul><ul><li>Den Fortschritt zeigt setProgress(int) an. </li></ul>setProgress(34)
    15. 15. Das Aufgehen des Dialogs <ul><li>Damit verhindert wird, dass bei sehr kurzen Operationen (etwa eine ½ Sekunde) Benutzer durch das Aufblinken des Dialogs verwirrt sind, geht der Dialog nicht sofort auf. </li></ul><ul><li>Zwei Eigenschaften sind in diesem Zusammenhang wichtig: </li></ul><ul><ul><li>millisToDecideToPopup (500 ms) </li></ul></ul><ul><ul><li>millisToPopup (2000 ms) </li></ul></ul><ul><li>Nach dem millisToDecideToPopup Millisekunden nach dem Erzeugen des Monitors vergangen sind, entscheidet er sich zur Berechung der Zeit zur Erfüllung der Aufgabe, eingerechnet dem, was schon passiert ist. </li></ul><ul><li>Liegt die Zeit über millisToPopup , wird der Dialog angezeigt. </li></ul>
    16. 16. Abbruch <ul><li>Da ein ProgressMonitor ein echter Dialog ist, kann dieser abgebrochen werden. </li></ul><ul><ul><li>Dass aber auch die Operation abgebrochen wird, ist Sache der Programmierer. </li></ul></ul><ul><ul><li>Ein Abbruch wird immer mit einem Dialog quittiert. </li></ul></ul><ul><li>Der Funktion isCanceled() gibt true zurück, wenn der Benutzter den Dialog abgebrochen hat. </li></ul><ul><li>Nach dem Ende sollte immer die close() Methode aufgerufen werden. </li></ul>
    17. 17. Den Abbruch erkennen <ul><li>while( !pm.isCanceled() && ! fertig ) { </li></ul><ul><li>// Operation durchführen </li></ul><ul><li>SwingUtilities.invokeLater( new Runnable() { </li></ul><ul><li>public void run() { </li></ul><ul><li>pm.setProgress( ++cnt );} </li></ul><ul><li>}); </li></ul><ul><li>} </li></ul><ul><li>if( pm.isCanceled() ) </li></ul><ul><li>JOptionPane.showMessageDialog( null, </li></ul><ul><li>&quot;Operation abgebrochen!&quot;, </li></ul><ul><li>&quot;Abbruch&quot;, </li></ul><ul><li>JOptionPane.ERROR_MESSAGE ); </li></ul>
    18. 18. ProgressMonitorInputStream <ul><li>Ein ProgressMonitorInputStream ist eine Unterklasse von java.io.FilterInputStream , der einen Fortschrittsmonitor anzeigt, wenn Daten aus einem Stream gelesen werden. </li></ul><ul><li>try { </li></ul><ul><li> in = new ProgressMonitorInputStream( </li></ul><ul><li> null, &quot;Lese Datei&quot; + fileName, </li></ul><ul><li>new FileInputStream(fileName) ); </li></ul><ul><li>} </li></ul><ul><li>catch( FileNotFoundException e ) { </li></ul><ul><li> e.printStackTrace(); </li></ul><ul><li>} </li></ul>
    19. 19. Professionelle IT-Qualifizierung
    20. 20. tutego über tutego <ul><li>Inhouse-Schulungen mit individualisierten Inhalten und Terminauswahl </li></ul><ul><li>190 Seminare </li></ul><ul><li>Kernkompetenz Java (60 Themen) </li></ul><ul><li>Europaweit führende Position im Bereich Java-Schulungen </li></ul><ul><li>Hochqualifizierte und zertifizierte Referenten </li></ul><ul><li>Firmengründung 1997 durch Java Champion Christian Ullenboom </li></ul>
    21. 21. Unsere Themen
    22. 22. Unsere Themen

    ×