Saját munkák

Gyerekszámológép teljes forráskódja (Java)

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

package megjelenes

 

Ablak.java

 

package megjelenes;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import szamolas.Szamologep;

public class Ablak extends JFrame implements ActionListener{
private static int WIDTH = 1200;
private static int HEIGHT = 800;
private Dimension display = Toolkit.getDefaultToolkit().getScreenSize();
private Nyomogomb[] szamGombok = new Nyomogomb[10];
private Nyomogomb torlesGomb = new Nyomogomb("C", 10, 20);
private Nyomogomb egyenloGomb = new Nyomogomb("=", 10, 20);

private Nyomogomb osszeadasGomb = new Nyomogomb("+", 10, 20);
private Nyomogomb kivonasGomb = new Nyomogomb("-", 10, 20);
private Nyomogomb szorzasGomb = new Nyomogomb("*", 10, 20);
private Nyomogomb osztasGomb = new Nyomogomb("/", 10, 20);
private Nyomogomb backGomb = new Nyomogomb("<<", 10, 10);

private JPanel szamologepPanel = new JPanel();
private JPanel szamokPanel = new JPanel();
private JPanel eredmenyPanel = new JPanel();
private JPanel muveletekPanel = new JPanel();
private JTextField szamBeviteliMezo = new JTextField(20);
private JTextField maradekMezo = new JTextField(5);
private JLabel eredmenyMezo = new JLabel("maradék: ");
private Szamologep szamologep = new Szamologep();
private JMenuBar jbar;
private JMenu menu;
private JMenuItem nevjegyMenuItem;
private JMenuItem szinpalettaMenuItem;

private Font beviteliMezoFont = new Font("SansSerif", Font.BOLD, 25);

public Ablak() {
AblakTulajdonsagbeallitas();
eredmenyPanelBeallitas();
nyomogombokPanelBeallitas();
setMenu();
setVisible(true);
}

private void setMenu() {
jbar = new JMenuBar();
menu = new JMenu("Menü");

nevjegyMenuItem = new JMenuItem("Névjegy");
nevjegyMenuItem.addActionListener(this);

szinpalettaMenuItem = new JMenuItem("Színpaletta");
szinpalettaMenuItem.addActionListener(this);

menu.add(szinpalettaMenuItem);
menu.add(nevjegyMenuItem);
jbar.add(menu);
this.setJMenuBar(jbar);
}

private void AblakTulajdonsagbeallitas(){
setTitle("Gyermekszámológép");
setBounds(display.width/2-WIDTH/2, display.height/2-HEIGHT/2, WIDTH/2, HEIGHT/2);
add(szamologepPanel);
szamologepPanel.setLayout(new BorderLayout());
szamologepPanel.add(eredmenyPanel, BorderLayout.NORTH);
szamologepPanel.add(szamokPanel, BorderLayout.CENTER);
szamologepPanel.add(muveletekPanel, BorderLayout.EAST);
}

public void eredmenyPanelBeallitas() {
eredmenyPanel.setLayout(new FlowLayout());
eredmenyPanel.add(szamBeviteliMezo);
eredmenyPanel.add(eredmenyMezo);
eredmenyPanel.add(maradekMezo);
eredmenyPanel.add(backGomb);
szamBeviteliMezo.setFont(beviteliMezoFont);
eredmenyMezo.setVisible(false);
maradekMezo.setVisible(false);
szamBeviteliMezo.setHorizontalAlignment(JTextField.CENTER);
backGomb.addActionListener(this);
}

private void nyomogombokPanelBeallitas() {
egyenloGomb.addActionListener(this);
osszeadasGomb.addActionListener(this);
kivonasGomb.addActionListener(this);
szorzasGomb.addActionListener(this);
osztasGomb.addActionListener(this);
torlesGomb.addActionListener(this);

for(int i = 0; i < szamGombok.length; i++) {
szamGombok[i] = new Nyomogomb(i, 20, 10);
szamGombok[i].addActionListener(this);
}

szamokPanel.setLayout(new GridLayout(4,3));
szamokPanel.add(szamGombok[7]);
szamokPanel.add(szamGombok[8]);
szamokPanel.add(szamGombok[9]);

szamokPanel.add(szamGombok[4]);
szamokPanel.add(szamGombok[5]);
szamokPanel.add(szamGombok[6]);

szamokPanel.add(szamGombok[1]);
szamokPanel.add(szamGombok[2]);
szamokPanel.add(szamGombok[3]);

szamokPanel.add(torlesGomb);
szamokPanel.add(szamGombok[0]);
szamokPanel.add(egyenloGomb);

muveletekPanel.setLayout(new GridLayout(2, 2));
muveletekPanel.add(osszeadasGomb);
muveletekPanel.add(kivonasGomb);
muveletekPanel.add(szorzasGomb);
muveletekPanel.add(osztasGomb);
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof Nyomogomb) {
Nyomogomb lenyomottGomb = (Nyomogomb)e.getSource();
if (lenyomottGomb == torlesGomb) {
szamologep.alaphelyzetbeAllit();
eredmenyMezo.setVisible(false);
maradekMezo.setVisible(false);
szamBeviteliMezo.setText("0");
szamologep.setStarted(false);
} else if (lenyomottGomb == backGomb) {
if ("".equals(szamBeviteliMezo.getText()) || "0".equals(szamBeviteliMezo.getText())) {
return;
}
if (szamBeviteliMezo.getText().length() == 1) {
szamBeviteliMezo.setText("0");
} else {
szamBeviteliMezo.setText(szamBeviteliMezo.getText().substring(0, szamBeviteliMezo.getText().length()-1));
}
szamologep.gombNyomas(lenyomottGomb.getText());
} else if(lenyomottGomb != egyenloGomb) {
if("0".equals(szamBeviteliMezo.getText())) {
szamBeviteliMezo.setText("");
}
if(("+".equals(lenyomottGomb.getText()) || "-".equals(lenyomottGomb.getText()) ||
"/".equals(lenyomottGomb.getText()) || "*".equals(lenyomottGomb.getText())) &&
("".equals(szamBeviteliMezo.getText()) || szamologep.isStarted() == false )) {
setWarningMsg("Nem engedélyezett művelet!");
return;
}
if(szamologep.isStarted() == false) {
eredmenyMezo.setVisible(false);
maradekMezo.setVisible(false);
szamBeviteliMezo.setText("");
szamologep.setStarted(true);
}

szamologep.gombNyomas(lenyomottGomb.getText());
szamBeviteliMezo.setText(szamBeviteliMezo.getText() + lenyomottGomb.getText());
}
else{
szamologep.eredmenyGeneralas();
szamBeviteliMezo.setText("" + szamologep.getEgeszEredmeny());
if(szamologep.getMaradek() != null) {
maradekMezo.setText("" + szamologep.getMaradek());
eredmenyMezo.setVisible(true);
maradekMezo.setVisible(true);
}
szamologep.alaphelyzetbeAllit();
}
}
else if(e.getSource() instanceof JMenuItem) {
if(e.getSource() == nevjegyMenuItem) {
new Nevjegy();
}
else if(e.getSource() == szinpalettaMenuItem) {
Szinpaletta szp = new Szinpaletta();
if(szp.jc.getColor().equals(Color.WHITE)) {
return;
}
eredmenyPanel.setBackground(szp.jc.getColor());
szamologepPanel.setBackground(szp.jc.getColor());
szamokPanel.setBackground(szp.jc.getColor());
muveletekPanel.setBackground(szp.jc.getColor());

for(int i = 0; i < szamGombok.length; i++) {
szamGombok[i].setBackground(szp.jc.getColor());
}

osszeadasGomb.setBackground(szp.jc.getColor());
kivonasGomb.setBackground(szp.jc.getColor());
szorzasGomb.setBackground(szp.jc.getColor());
osztasGomb.setBackground(szp.jc.getColor());
egyenloGomb.setBackground(szp.jc.getColor());
torlesGomb.setBackground(szp.jc.getColor());
szamBeviteliMezo.setBackground(szp.jc.getColor());
backGomb.setBackground(szp.jc.getColor());
}
}
}
public static void setWarningMsg(String text){
Toolkit.getDefaultToolkit().beep();
JOptionPane optionPane = new JOptionPane(text,JOptionPane.WARNING_MESSAGE);
JDialog dialog = optionPane.createDialog("Figyelmeztetés!");
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
}
}

 

Main.java

 

package megjelenes;

public class Main {
public static void main(String[] args) {
Ablak a = new Ablak();
}
}

 

Nevjegy.java

 

package megjelenes;

import java.awt.Color;
import javax.swing.JDialog;
import javax.swing.JLabel;

public class Nevjegy extends JDialog{
private static final Color WHITE = Color.WHITE;

JLabel lb1 = new JLabel();
public Nevjegy() {
setTitle("Névjegy");
setBounds(100, 100, 300, 100);
setModal(true);
lb1.setText("<html><pre><center>All rights reserved - 2017 - Pénzes László" + " <br/>"
+ "<a href=\"http://www.informatika-programozas.hu\">www.informatika-programozas.hu</a></center></pre></html>");
lb1.setBackground(WHITE);
lb1.setHorizontalAlignment(0);
lb1.setVerticalAlignment(1);
this.add(lb1);
setVisible(true);
}
}

 

Nyomogomb.java

 

package megjelenes;
import java.awt.Font;
import javax.swing.JButton;

public class Nyomogomb extends JButton {
public Nyomogomb(int i, int width, int height) {
super();
setSize(width, height);
setText("" + i);
setFont(new Font("Arial", Font.BOLD, 30));
}

public Nyomogomb(String text, int width, int height) {
super();
setSize(width, height);
setText(text);
setFont(new Font("Arial", Font.BOLD, 30));
}
}

 

Szinpaletta.java

 

package megjelenes;

import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Szinpaletta extends JDialog implements ChangeListener {
public JColorChooser jc = new JColorChooser();

public Szinpaletta() {
setTitle("Színpaletta");
setBounds(100, 100, 400, 400);
setModal(true);
jc.getSelectionModel().addChangeListener(this);
this.add(jc);
setVisible(true);
}

@Override
public void stateChanged(ChangeEvent arg0) {

}
}

 

package szamolas

 

Szamologep.java

 

package szamolas;

public class Szamologep {
private Integer egeszEredmeny;
private Integer maradek;
private String beviteliMezo;
private boolean started = false;


public void alaphelyzetbeAllit() {
this.egeszEredmeny = null;
this.maradek = null;
this.beviteliMezo = "";
this.started = false;
}

public Szamologep() {
}

public void gombNyomas(String str) {
if ("<<".equals(str)) {
if(beviteliMezo.length() > 1) {
beviteliMezo = beviteliMezo.substring(0, beviteliMezo.length() - 1);
}
} else {
beviteliMezo += str;
}
}

public void eredmenyGeneralas() {
String aktualisSzam = "";
char aktualisMuvelet = ' ';

for(int i = 0; i < beviteliMezo.length(); i++) {
char aktChar = beviteliMezo.charAt(i);
if(aktChar >= '0' && aktChar <= '9') {
aktualisSzam += beviteliMezo.charAt(i);
}
else if(aktChar == '+' || aktChar == '-' || aktChar == '*' || aktChar == '/') {
if(egeszEredmeny == null) {
egeszEredmeny = new Integer(Integer.parseInt(aktualisSzam));
aktualisSzam = "";
aktualisMuvelet = aktChar;
}
else {
int aktSzam = Integer.parseInt(aktualisSzam);
szamol(aktSzam, aktualisMuvelet);
aktualisMuvelet = aktChar;
aktualisSzam = "";
}
}
}

if (!"".equals(aktualisMuvelet)) {
szamol(Integer.parseInt(aktualisSzam), aktualisMuvelet);
}
beviteliMezo = "";
}

private void szamol(int aktSzam, char muvelet) {
if ('+' == muvelet) {
egeszEredmeny += aktSzam;
} else if ('-' == muvelet) {
egeszEredmeny -= aktSzam;
} else if ('*' == muvelet) {
egeszEredmeny *= aktSzam;
} else if ('/' == muvelet) {
maradek = egeszEredmeny%aktSzam;
egeszEredmeny /= aktSzam;
}
}

public String formazottEredmeny() {
String str = "eredmény: " + egeszEredmeny;
if(maradek != null) {
str += " maradék: " + maradek;
}
return str;
}
public Integer getEgeszEredmeny() {
return egeszEredmeny;
}

public Integer getMaradek() {
return maradek;
}
public boolean isStarted() {
return started;
}
public void setStarted(boolean started) {
this.started = started;
}
}