Cambiar el tamaño de la estructura círculo de la práctica MVC

marco MVC se divide en un control (datos adquiridos en el radio adquisición de un círculo aquí), el modelo (donde el radio del círculo se almacenan los datos de la tienda), la vista (correspondiente a un círculo dibujado)
de código es como sigue:
Modelo:

在这里插入代码片
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class model {
	private double r=10;
	private ArrayList<ActionListener> a;
	public double getr() {
		return r;
	}
	public void setr(double r) {
		this.r=r;
		process(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"r"));
	}
	public synchronized void addActionListener(ActionListener l){
		if(a==null)
			a=new ArrayList<ActionListener>();
		a.add(l);
	}
	public synchronized void removeActionListener(ActionListener l) {
		if(a!=null&&a.contains(l))
			a.remove(l);
	}
	public void process(ActionEvent e) {
		ArrayList list;
		synchronized(this) {
			if(a==null)
				return;
			list=(ArrayList)a.clone();
		}
		for(int i=0;i<list.size();i++)
			((ActionListener)list.get(i)).actionPerformed(e);
	}
}

Ver lograr oyente ActionListener, para escuchar la notificación de la magia. Ya que los intentos para modelar las propiedades incluidos. Después de ajustar el modelo en la vista, tratando de registrarse para el modelo. Vista de la cubierta y se extienden método JPanel paintComponent para dibujar un círculo de acuerdo con los atributos especificados en el modelo.

Ver:

在这里插入代码片
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;

public class view extends JPanel implements ActionListener{
private model model1;
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		repaint();
	}
	public void setmodel(model m) {
		this.model1=m;
		if(this.model1!=null)
			this.model1.addActionListener(this);
		repaint();
	}
	public model getmodel(){
		return this.model1;
	}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		if(model1==null)
			return;
		int x=getWidth()/2;
		int y=getHeight()/2;
		int r=(int)model1.getr();
		g.drawOval(x-r, y-r, 2*r, 2*r);
	}

}

Los controles se dan interfaz GUI, a través del cual los usuarios pueden entrada círculo atributo humano r. Modelo de control como su atributo incluido. Puede utilizar los métodos asociados setModel modelo y controles ronda. Controla el uso de un campo de texto para obtener un nuevo valor de radio.

controles:

在这里插入代码片
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class control extends JPanel{
private model model1;
private JTextField shuru=new JTextField(8);
public control() {
	add(new JLabel("R"));
	add(shuru);
	shuru.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO 自动生成的方法存根
			if(model1==null)
				return;
			model1.setr(new Double(shuru.getText()).doubleValue());
		}});
}

public void setmodel(model m) {
	model1=m;
}
public model getmodel() {
	return model1;
}
}

categorías de prueba:

在这里插入代码片
import java.awt.BorderLayout;

import javax.swing.JApplet;

public class test extends JApplet{
model model1=new model();
public test() {
	setLayout(new BorderLayout());
	control control1=new control();
	control1.setmodel(model1);
	add(control1,BorderLayout.SOUTH);
	view view1=new view();
	view1.setmodel(model1);
	add(view1,BorderLayout.CENTER);
}
}

Modelos para el almacenamiento y procesamiento de datos, visualización de vista de datos es responsable. Model - El método básico es el de mantener el punto de vista y la vista de la consistencia del modelo. Cualquier cambio en el modelo debe estar asociado con tales través de visión. Todos los puntos de vista sobre el mismo modelo debe ser el mismo número de W. pantalla electroluminiscente modelo de datos también a través de los controles a modificar.

Publicado 130 artículos originales · elogios ganado 16 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/feiqipengcheng/article/details/105128561
Recomendado
Clasificación