Java tehtäviä vaikeat vastaus1

Mureakuha

Loikkaa: valikkoon, hakuun

Tehtävä:

Kirjoita ohjelma, jossa on liukusäädin (JSlider luokka) ja edistyspalkki (JProgressBar luokka) kontrollit. Säädettäessä liukusäädintä vaikuttaa aseman muutos myös edistyspalkkiin. Se siis seuraa liukusäätimen asentoa. Aseta liukusäätimelle väliksi 0 - 20 ja edistyspalkille 0 - 100.

EdistysFrame.java

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
 
/**
 * Ikkunaluokka.
 */
public class EdistysFrame extends JFrame
{
  private JProgressBar progressBar = new JProgressBar();
  private JSlider slider = new JSlider();
 
  /**
   * Konstruktori.
   */
  public EdistysFrame()
  {
    FlowLayout flowLayout = new FlowLayout();
    flowLayout.setHgap( 0 );
    flowLayout.setVgap( 20 );
 
    JPanel contentPane = ( JPanel ) getContentPane();
    contentPane.setLayout( flowLayout );
 
    setTitle( "Liukusäädin & edistyspalkki" );
    setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
    setResizable( false );
    setSize( new Dimension( 400, 140 ) );
 
    progressBar.setPreferredSize( new Dimension( 350, 16 ) );
    progressBar.setValue( 30 );
 
    slider.setMinorTickSpacing( 1 );
    slider.setMajorTickSpacing( 20 );
    slider.setValue( 5 );
    slider.setPaintTicks( true );
    slider.setMaximum( 20 );
    slider.setSnapToTicks( true );
    slider.setPreferredSize( new Dimension( 250, 32 ) );
    slider.addChangeListener( new javax.swing.event.ChangeListener()
    {
      public void stateChanged( ChangeEvent e )
      {
        slider_stateChanged( e );
      }
    } );
 
    contentPane.setBorder( BorderFactory.createEtchedBorder() );
    contentPane.add( slider, null );
    contentPane.add( progressBar, null );
  }
 
  /**
   * Liukusäätimen tutkinen.
   * @param e tapahtuman tarkempi kuvaus
   */
  private void slider_stateChanged( ChangeEvent e )
  {
    progressBar.setValue( slider.getValue() * 5 );
  }
 
}

EdistysApp.java

import java.awt.*;
import javax.swing.UIManager;
 
/**
 * Varsinainen ohjelma.
 */
public class EdistysApp
{
  /**
   * Luo ja rakentaa ohjelman.
   */
  public EdistysApp()
  {
    EdistysFrame frame = new EdistysFrame();
    frame.validate();
 
    // keskittää ohjelman ruudun keskelle
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if ( frameSize.height > screenSize.height )
      frameSize.height = screenSize.height;
 
    if ( frameSize.width > screenSize.width )
      frameSize.width = screenSize.width;
 
    frame.setLocation( ( screenSize.width - frameSize.width ) / 2, ( screenSize.height - frameSize.height ) / 2 );
 
    // näyttää ohjelman
    frame.setVisible( true );
  }
 
  /**
   * Main-metodi.
   * @param args käynnistysparametrit
   */
  public static void main( String[] args )
  {
    try
    {
      UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
    }
    catch ( Exception e )
    {
      e.printStackTrace();
    }
    new EdistysApp();
  }
}
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.

Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut