Tämä ohjelma laskee pääomaveron määrän tässä tapauksessa esimerkkinä ovat vuokratulot. Vuokratuloista vähennetään yhtiövastike ja korkomenot. Pääomaveron osuus on 30% ja 30 000€ ylittävältä osalta 34%.
import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JRadioButton; import javax.swing.ButtonGroup; public class PaaomaVerotus extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; JTextField vuokra = new JTextField(10); JTextField yhtiovastike = new JTextField(10); JTextField korko = new JTextField(10); JLabel tulos = new JLabel("0"); JRadioButton vuosi = new JRadioButton("vuosi"); JRadioButton kuukausi = new JRadioButton("kuukausi"); ButtonGroup valinnat = new ButtonGroup(); public static void main(String[] args){ new PaaomaVerotus().setVisible(true); } private PaaomaVerotus(){ //Luodaan ikkuna. super("Pääomaverotus"); setSize(600,600); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); //Luodaan asettelu ja lisätään kontrollit. setLayout(new FlowLayout()); JButton laske = new JButton("Laske"); laske.addActionListener(this); add(laske); //Asetetaan fontti. tulos.setFont(new Font("Arial",Font.PLAIN,18)); //Tekstikentät vuokra.setText("Vuokra"); yhtiovastike.setText("Yhtiövastike"); korko.setText("Korko"); add(vuokra); add(yhtiovastike); add(korko); add(tulos); //Valinnat. add(vuosi); add(kuukausi); //Lisätään valinnat. valinnat.add(vuosi); valinnat.add(kuukausi); } @Override public void actionPerformed(ActionEvent e){ double tulot = 0.0; double menot = 0.0; double verotettava = 0.0; double vero = 0.0; //Syöte on joko kuukausi tai vuoden tulot ja menot. //Lasketaan ensin tulot ja menot sen jälkeen verotettava summa ja lopuksi vero. if (vuosi.isSelected()){ tulot = Double.valueOf(vuokra.getText()); menot = Double.valueOf(yhtiovastike.getText())+Double.valueOf(korko.getText()); verotettava = tulot-menot; } else if (kuukausi.isSelected()){ tulot = Double.valueOf(vuokra.getText())*12; menot = Double.valueOf(yhtiovastike.getText())*12+Double.valueOf(korko.getText())*12; verotettava = tulot-menot; } //Lasketaan vero. if (verotettava > 30000){ vero = verotettava*0.34; } else { vero = verotettava*0.3; } tulos.setText("Vero:" + String.valueOf(vero)); } }
Ihan näppärän oloista koodia ja kiva Swing-GUI, vaikka en ajanutkaan ohjelmaa.
Kanssa näppärää, jos on enemmän noita Swing-komponentteja, niin pystyy paremmin hallitsemaan layoutin suhteen sijoittelua, kun ryhmittelee vähän JPanel -komponentin sisälle ja ryhmittelee JButtoneita ja mitä noita TextBoxeja ja JLabeleita on, niin sitten JPanelit asemoi johonkin järkevään Layoutiin tuossa JFramessa. Tässähän sä käytät tuota FlowLayout -luokkaa, itse jotenkin jumiutunut, tai useimmiten käytän BorderLayOutia.
Olio-ohjelmoinnin jatkokurssillakin ja mitä Java-kirjallisuutta aika paljonkin aikanani lukenut, viime aikoina vähemmän, niin niissä kirjojen koodiesimerkeissäkin tuo JFrame yleensä periytetään tuossa luokan määrittelyn otsikkorivillä, vaikka sekään ole pakollista.
Kun rahan kanssa pelataan, löytyisi varmaan Javasta siihen hommaan kelvollisempia tietotyyppejäkin kuin double...
Pelataanko täällä rahapelejä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.