package valwin; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.IOException; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import demo.ValuuttaMuunnos; import fi.jyu.mit.ohj2.Mjonot; /** * Vaihtaja Swingillä */ public class VaihtajaSwing extends JFrame { private final ValuuttaMuunnos.Valuutat valuutat = new ValuuttaMuunnos.Valuutat(); private final JTextField editRaha; private final JComboBox cbValuutta; private final JLabel labelOn; // NOPMD private final JTextField editTulos; private final JLabel labelPerus; private static final long serialVersionUID = -7911100348751606063L; /** * Launch the application * @param args */ public static void main(String args[]) { try { VaihtajaSwing frame = new VaihtajaSwing(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); // NOPMD } } /** * Create the frame * @throws IOException */ public VaihtajaSwing() throws IOException { super(); getContentPane().setLayout(new FlowLayout()); setBounds(100, 100, 329, 73); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); editRaha = new JTextField(); editRaha.addKeyListener(new KeyAdapter() { @Override public void keyReleased(final KeyEvent arg0) { vaihda(); } }); editRaha.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { editRaha.selectAll(); } }); editRaha.setPreferredSize(new Dimension(50, 25)); getContentPane().add(editRaha); cbValuutta = new JComboBox(); cbValuutta.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { vaihda(); } }); getContentPane().add(cbValuutta); labelOn = new JLabel(); labelOn.setFont(new Font("", Font.BOLD, 22)); labelOn.setText("="); getContentPane().add(labelOn); editTulos = new JTextField(); editTulos.setEditable(false); editTulos.setPreferredSize(new Dimension(50, 25)); getContentPane().add(editTulos); labelPerus = new JLabel(); labelPerus.setText("mk"); getContentPane().add(labelPerus); // alustaValuutat(); } /** * Vaihtaa editRahassa olevan rahamäärän perusvaluuttaan * ja laittaa sen editTulokseen */ private void vaihda() { double raha = Mjonot.erotaDouble(editRaha.getText(),0); double tulos = valuutat.getVaihdettuMaara((String)cbValuutta.getSelectedItem(),raha); editTulos.setText(String.format("%4.2f",tulos)); } /** * Alustetaan valuutta combo ja peruvaluutta * @throws IOException jos lukeminen ei onnistu */ private void alustaValuutat() throws IOException { String nimi = "http://users.jyu.fi/~vesal/kurssit/ohj2/luennot/09/0407ti/valuutat.dat"; valuutat.lue(nimi); String nimet[] = valuutat.getValuuttojenNimet(); for (String jono : nimet) cbValuutta.addItem(jono); if ( nimet.length > 1 ) cbValuutta.setSelectedIndex(1); // Vaihdetaan perusvaluutan teksti labelPerus.setText(valuutat.ekanValuutannimi()); vaihda(); editRaha.selectAll(); } }