import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.FlowLayout; class MainWindow extends JFrame { private JButton calcButton = new JButton("Számít"); public JTextField baseField = new JTextField(10); public JTextField heightField = new JTextField(10); public JTextField resultField = new JTextField(10); private JLabel baseLabel = new JLabel("alap:"); private JLabel heightLabel = new JLabel("magasság:"); MainWindow() { resultField.setVisible(false); add(baseLabel); add(baseField); add(heightLabel); add(heightField); add(resultField); add(calcButton); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); centerWindow(this); setVisible(true); } public void addCalcButtonActionListener(ActionListener listener) { calcButton.addActionListener(listener); } public static void centerWindow(java.awt.Window frame) { java.awt.Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); int x = (int)((dimension.getWidth() - frame.getWidth()) / 2); int y = (int)((dimension.getHeight() - frame.getHeight()) / 2); frame.setLocation(x, y); } } class Controller { MainWindow mainWindow = new MainWindow(); Model model = new Model(); Controller() { mainWindow.addCalcButtonActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { String baseStr = mainWindow.baseField.getText(); String heightStr = mainWindow.heightField.getText(); double base = Double.parseDouble(baseStr); double height = Double.parseDouble(heightStr); Double area = model.calcArea(base, height); mainWindow.resultField.setText(area.toString()); mainWindow.resultField.setVisible(true); mainWindow.pack(); } }); } } class Model { public double calcArea(double base, double height) { if(base <= 0 || height <=0) { throw new IllegalArgumentException(); } return (base * height) /2; } } class Program01 { public static void main(String[]args) { new Controller(); } }