Java tehtäviä perusteet vastaus4
Mureakuha
Tehtävä:
Kirjoita ohjelma, jossa on kaksi vierityspalkkia. Niiden asemaa pystyy hiirellä muuttamaan naputtelemalla kuilusta, palkin päästä tai siirtämällä hissilaatikkoa. Palkkien vieritysväli on 0 - 10000 ja kummankin palkin sen hetkinen tilanne tulostetaan JLabel-kontrolliin riippuen siitä kumpaa palkkia käyttäjä viimeksi muutti.
[muokkaa]
VieritysFrame.java
import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Ikkunaluokka. */ public class VieritysFrame extends JFrame { private JLabel label = new JLabel(); /** * Konstruktori. */ public VieritysFrame() { JScrollBar jScrollBar1 = new JScrollBar(); JScrollBar jScrollBar2 = new JScrollBar(); JPanel contentPane = ( JPanel ) getContentPane(); contentPane.setLayout( new GridBagLayout() ); setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE ); setResizable( false ); setSize( new Dimension( 400, 300 ) ); setTitle( "Vierityspalkki" ); jScrollBar1.setMaximum( 10000 ); jScrollBar1.setVisibleAmount( 0 ); jScrollBar1.setPreferredSize( new Dimension( 16, 150 ) ); jScrollBar1.addAdjustmentListener( new java.awt.event.AdjustmentListener() { public void adjustmentValueChanged( AdjustmentEvent e ) { scrollBar_adjustmentValueChanged( e ); } } ); jScrollBar2.setOrientation( JScrollBar.HORIZONTAL ); jScrollBar2.setMaximum( 10000 ); jScrollBar2.setVisibleAmount( 0 ); jScrollBar2.setPreferredSize( new Dimension( 200, 16 ) ); jScrollBar2.addAdjustmentListener( new java.awt.event.AdjustmentListener() { public void adjustmentValueChanged( AdjustmentEvent e ) { scrollBar_adjustmentValueChanged( e ); } } ); label.setBorder( BorderFactory.createEtchedBorder() ); label.setText( "JLabel kontrolli" ); contentPane.add( jScrollBar1, new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 20, 0 ), 0, 0 ) ); contentPane.add( jScrollBar2, new GridBagConstraints( 1, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 20, 0, 0 ), 0, 0 ) ); contentPane.add( label, new GridBagConstraints( 0, 1, 2, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); } /** * Vierityspalkin tutkinen. * @param e tapahtuman tarkempi kuvaus */ private void scrollBar_adjustmentValueChanged( AdjustmentEvent e ) { int i = ( ( JScrollBar ) ( e.getSource() ) ).getValue(); label.setText( " " + i ); } }
[muokkaa]
VieritysApp.java
import javax.swing.UIManager; import java.awt.*; /** * Varsinainen ohjelma. */ public class VieritysApp { private VieritysFrame frame; /** * Luo ja rakentaa ohjelman. */ public VieritysApp() { frame = new VieritysFrame(); 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 VieritysApp(); } }
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
