Java tehtäviä vaikeat vastaus1
Mureakuha
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.
[muokkaa]
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 ); } }
[muokkaa]
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ä.
Kopio lisenssistä (englanniksi) löytyy täältä.
Alkuperäinen (c) Petteri Hämäläinen
