Model View Controller - hvordan styres en button i controlleren?
her er alle klasserne, som de ser ud nu, men jeg mangler at få Square knappen til at fungere, så det er den der laver udregningen og ikke ved enter i numberField. hvordan ændrer jeg det?/******************************************************************
* View
******************************************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class View extends JFrame
{
private Model model;
private JTextField numberField, squareField;
private JLabel numberLabel, squareLabel;
private JButton button;
public View(Model model)
{
this.model = model;
Container contentPane = this.getContentPane();
JPanel panel = new JPanel();
numberLabel = new JLabel("Number:");
numberField = new JTextField(5);
squareLabel = new JLabel("m2:");
squareField = new JTextField(5);
squareField.setEditable(false);
button = new JButton("Square");
panel.add(numberLabel);
panel.add(numberField);
panel.add(squareLabel);
panel.add(squareField);
panel.add(button);
contentPane.add(panel);
numberField.addActionListener(new Controller(model, this));
squareField.addActionListener(new Controller(model, this));
button.addActionListener(new Controller(model, this));
}
public int getNumber()
{
return Integer.parseInt(numberField.getText());
}
public void update()
{
numberField.setText("");
squareField.setText(Integer.toString(model.getSquare()));
}
}
/******************************************************************
* Model
******************************************************************/
public class Model
{
private int number;
int getNumber()
{
return number;
}
int getSquare()
{
return number * number;
}
void setNumber(int number)
{
this.number = number;
}
}
/******************************************************************
* Controller
******************************************************************/
import java.awt.event.*;
import java.awt.event.*;
public class Controller implements ActionListener
{
private Model model;
private View view;
public Controller(Model model, View view)
{
this.model = model;
this.view = view;
}
public void actionPerformed(ActionEvent e)
{
model.setNumber(view.getNumber());
view.update();
}
}
/******************************************************************
* Test
******************************************************************/
import java.awt.event.*;
public class Test
{
public static void main(String args[])
{
Model model = new Model();
View view = new View(model);
view.setTitle("Hello world");
view.setSize(140, 150);
view.setVisible(true);
view.setResizable(false);
view.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e) {System.exit(0);} });
}
