¿Por qué la vista no ejecuta repaint() en update()?

Tengo problemas, al pintar una vista, siguiendo el patrón MVC.

El problema es que cuando el modelo indica que el objeto observable ha cambiado, se ejecuta la actualización de la vista, pero al llamar al repaint() no ejecuta su contenido. Lo que quiero pintar es una imagen, el problema puede ser que la clase extiende la vista, no sea apropiada (Canvas).

Al depurar, lo que sucede es que el modelo notifica a la vista que el objeto se ha modificado, luego ejecuta el método update (), pero no ejecuta el contenido de paint ().

El modelo se modifica cuando la “anguloRotacion”, en la que aumento o disminuyo, el ángulo de rotación de la imagen. Este código se encuentra dentro del método anguloRotacion (), dentro del modelo.

Si necesitáis más explicaciones o aclaraciones, por favor hacermelo saber. Realmente necesito resolver este problema.

Controller code:

/*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templates  * and open the template in the editor.  */ package controlador;  import Auxiliares.Canon; import Auxiliares.Casilla; import Auxiliares.ContenedorFinal; import Vistas.*; import Vistas.VistaCanon; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.*; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.plaf.basic.BasicProgressBarUI;  /**  *  * @author ignacioaranguren  */ public class Controlador extends JFrame {      private JPanel contenedorFinal;     private JProgressBar barra;     private ActionListener ac;     private Timer t;     private int puntuacion = 0;     private DecimalFormat timeFormatter;     private JLabel etiquetaFin;     private JButton finalizar;     private Graphics2D offGraphics;     private Image offImage;     private Modelo modelo;     private VistaCanon vistaCanon;     private VistaBala vistaBala;     private VistaCasillas vistaCasillas;     private VistaCorazon vistaCorazon;     private VistaHaCaidoAgua vistaHaCaidoAgua;     private VistaSegundero vistaSegundero;     private VistaPuntuacion vistaPuntuacion;      public Controlador() {          setLayout(null);         modelo = new Modelo();         vistaCanon = new VistaCanon(modelo);          modelo.addObserver(vistaCanon);          modelo.initComponents();         timeFormatter = new DecimalFormat("00");         etiquetaFin = new JLabel("Juego finalizado");         etiquetaFin.setFont(new Font("Arial", Font.PLAIN, 35));         etiquetaFin.setBounds(250, 330, 300, 100);         etiquetaFin.setVisible(false);         finalizar = new JButton("Menu principal");         finalizar.setBounds(300, 410, 150, 30);         finalizar.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.exit(0);             }         });         finalizar.setVisible(false);         contenedorFinal = new ContenedorFinal();         contenedorFinal.setBackground(Color.red);         contenedorFinal.setVisible(false);         contenedorFinal.setBounds(0, 0, 940, 900);          barra = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);         barra.setBounds(450, 730, 200, 40);         barra.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));         barra.setUI(new BasicProgressBarUI() {             @Override             protected void paintDeterminate(Graphics g, JComponent c) {                 Graphics2D g2d = (Graphics2D) g;                 int ancho = barra.getWidth();                 int alto = barra.getHeight();                  int espacioAncho = ancho;                 int espacioAlto = alto;                 barra.setPreferredSize(new Dimension(200, 40));                 double porcentajeProgres = barra.getPercentComplete();                  espacioAncho = (int) (espacioAncho * porcentajeProgres);                 if (porcentajeProgres <= 0.25) {                     g2d.setColor(Color.GREEN);                 } else if (porcentajeProgres > 0.25 && porcentajeProgres <= 0.5) {                     g2d.setColor(Color.yellow);                 } else if (porcentajeProgres > 0.5 && porcentajeProgres <= 0.75) {                     g2d.setColor(Color.orange);                 } else {                     g2d.setColor(Color.red);                 }                 Rectangle rec1 = new Rectangle(0, 0, espacioAncho, espacioAlto);                 g2d.fill(rec1);             }          });            ac = new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 modelo.BarraProgreso();             }          };          modelo.setBarra(barra);         modelo.setBotonFinalizar(finalizar);         modelo.setContenedorFinal(contenedorFinal);         modelo.setEtiquetaFin(etiquetaFin);         modelo.setTimerFormater(timeFormatter);          t = new Timer(35, ac);         t.start();          addKeyListener(new KeyAdapter() {             @Override             public void keyPressed(KeyEvent evento) {                 switch (evento.getKeyCode()) {                     case KeyEvent.VK_LEFT:                         modelo.anguloRotacion(1);                         break;                     case KeyEvent.VK_RIGHT:                         modelo.anguloRotacion(2);                         break;                     case KeyEvent.VK_ENTER:                         modelo.anguloRotacion(3);                         break;                     case KeyEvent.VK_ESCAPE:                                  repaint();                         modelo.salirJuego(JOptionPane.showConfirmDialog(null, "¿Volver al menú principal?", "Juego", JOptionPane.YES_NO_OPTION));                         break;                     case KeyEvent.VK_H:                         JOptionPane.showMessageDialog(null, "-Pulsa las teclas izquierda y derecha para mover el cañón.\n-Selecciona una "                                 + "intensidad mediante la barra de fuerza:\n   -Rojo = Disparar fuerte.\n   -Amarillo = disparar medio fuerte"                                 + ". \n   -Verde = disparar suave.\n-Pulsa Enter para disparar. \n-Durante el disparo puedes modificar su trayectoria mediante la teclas izquierda y derecha."                                 + "\n-La puntuación: \n   -Los cangrejos (+1). \n   -Los tesoros (+2). \n   -Las botellas de ron (-1) vidas.", "Cómo jugar", JOptionPane.QUESTION_MESSAGE);                         break;                 }                 requestFocus();             }             });          addWindowListener(new java.awt.event.WindowAdapter() {             @Override             public void windowClosing(java.awt.event.WindowEvent evt) {                 close();             }         });          setSize(940, 900);         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);         add(finalizar);         add(etiquetaFin);         setResizable(false);         add(contenedorFinal);         add(barra);         setVisible(true);      }      @Override     public void paint(Graphics g) {         Graphics2D g2d = (Graphics2D) g;         Image fondo = new ImageIcon(getClass().getResource("/imagenes/fondo.jpeg")).getImage();         g2d.drawImage(fondo, 0, 0, null);         g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,         RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);         g2d.setFont(new Font("Marker Felt", Font.PLAIN, 30));         g2d.setColor(Color.white);         g2d.drawString("Cómo jugar, Pulsa H", 710, 330);         g2d.drawString("Pulsa ESC para salir", 710, 380);               Image img2 = new ImageIcon(getClass().getResource("/imagenes/fondoMapa.png")).getImage();         g2d.drawImage(img2, 30, 30, this);     }      private void close() {         if (JOptionPane.showConfirmDialog(rootPane, "¿Volver al menú principal?",                 "Juego", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {             System.exit(0);         }     }      } 

Model manipulation:

   package controlador;  import Auxiliares.Canon; import Auxiliares.Casilla; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Observable; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.Timer;  /**  *  * @author ignacio  */ public class Modelo extends Observable {      private double anguloRotacion, anguloMin, anguloMax;     private boolean teclaPresionada, flag, flagBala, pintarCasilla, balaAgua;     private JProgressBar barra;     private double vX, vY, x1, x2, x1Anterior, x2Anterior, alfa, escala, i;     private Timer animacion, timer;     private Canon canon;     private int progreso, x, y, puntuacion, vidas, posVidaX, contadorCasilla;     private Casilla[][] casilla;     private double posX[], posY[];     private BufferedImage imgB;     private Image img2, fondo, fondoMapa, vida, img;     private ArrayList<Casilla> arrayCasilla;     private JLabel etiquetaFin;     private JButton finalizar;     private JPanel contenedorFinal;     private byte seconds;     private short minutes;     private DecimalFormat timeformater;       public void setBarra(JProgressBar b){         this.barra = b;     }      public void setEtiquetaFin(JLabel f){         this.etiquetaFin = f;     }      public void setTimerFormater(DecimalFormat d){         timeformater = d;     }      public void setContenedorFinal(JPanel p){         contenedorFinal = p;     }      public void setBotonFinalizar(JButton b){         this.finalizar = b;     }       public void initComponents(){         seconds = 00;         minutes = 03;          timer = new Timer(1000, new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                  if (seconds == 0 && minutes == 0) {                     timer.stop();                     etiquetaFin.setVisible(true);                     finalizar.setVisible(true);                     contenedorFinal.setVisible(true);                  } else if (seconds > 0) {                     seconds--;                     setChanged();                     notifyObservers();                  } else if (minutes > 0) {                     minutes--;                     seconds = 59;                     setChanged();                     notifyObservers();                 }              }         });         timer.start();          posX = new double[]{30, 79, 128.0, 177.0, 226.0, 275.0, 324.0, 373.0, 422.0, 471.0, 520.0, 569.0, 618};         posY = new double[]{30, 83.0, 136.0, 189.0, 242.0, 295.0, 348.0, 401.0, 454.0, 507.0, 560.0, 613.0, 613};         casilla = new Casilla[13][13];         inicializarCasillas();         anguloRotacion = Math.PI / 2;         vidas = 3;         anguloMax = 0.81986726449;         anguloMin = anguloMax = 2.32172538679;         teclaPresionada = false;         flag = false;         flagBala = false;         pintarCasilla = false;         balaAgua = false;         i = 0;         progreso = 0;         this.canon = canon = new Canon();         this.barra = barra;         arrayCasilla = new ArrayList<>();         llenarCasillas();     }      public void cargarImagenes() {         try {             img2 = new ImageIcon(getClass().getResource("/imagenes/fondoMapa.png")).getImage();             fondo = new ImageIcon(getClass().getResource("/imagenes/fondo.jpeg")).getImage();             vida = new ImageIcon(getClass().getResource("/imagenes/vida.png")).getImage();             img = new ImageIcon(getClass().getResource("/imagenes/BalaCanon.png")).getImage();             imgB = ImageIO.read(getClass().getResource("/imagenes/canon.png"));         } catch (IOException ex) {             Logger.getLogger(Modelo.class.getName()).log(Level.SEVERE, null, ex);         }      }      public void anguloRotacion(int direccion) {         switch (direccion) {             case 1:                 if (anguloRotacion > anguloMin && anguloRotacion < anguloMax) {                     anguloRotacion = anguloRotacion + 0.05;                 } else {                     anguloRotacion = anguloRotacion - 0.05;                 }                 setChanged();                 notifyObservers();                 break;             case 2:                 if (anguloRotacion > anguloMin && anguloRotacion < anguloMax) {                     anguloRotacion = anguloRotacion - 0.05;                 } else {                     anguloRotacion = anguloRotacion + 0.05;                 }                 setChanged();                 notifyObservers();                 break;              default:                 break;         }      } } 

View code:

package Vistas;  import controlador.Modelo; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.util.Observable; import java.util.Observer;   public class VistaCanon extends Canvas implements Observer {      private Modelo m;      public VistaCanon(Modelo m) {         this.m = m;     }      @Override     public void paint(Graphics g) {         super.paint(g);         Graphics2D g2d = (Graphics2D) g;         g2d.setColor(Color.gray);         g2d.fillRect(30, 720, 646, 122);         AffineTransform tx = AffineTransform.getRotateInstance(Math.PI / 2 - m.getAnguloRotacion(), m.getImB().getWidth(this) / 2, m.getImB().getHeight(this) / 2);         AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);         tx.rotate(Math.PI / 2 - m.getAnguloRotacion());         System.out.println(tx.toString());          g2d.drawImage(op.filter(m.getImB(), null), 360, 740, null);     }      @Override     public void update(Observable o, Object arg) {         repaint();     }  } 

Cambiar de vista segun click

Quiero cambiar de vista mediante el click add friend

<div>         <div class="xc" *ngFor="let userCurrent of listUsers; let i = index">             <span>{{userCurrent.name}}</span>             <span>{{userCurrent.email}}</span>             <span> <a href="addFriend">Add friend</a></span>         </div>     </div> 

cuando le doy click en add friends quiero que me mande al componente friends (solo a manera de prueba, ya se que no tiene logica de negocio)

<ion-app>   <app-list-user></app-list-user> <app-friends></app-friends> </ion-app> 

no puedo ingresar a un a vista por error de token laravel 5.1

help ! no puedo ingresar a mi vista de reset para contraseñas estoy usan laravel 5.1 y el error q me sale es este

ErrorException in 799914cb6bd05b74dd298cd45e169be3 line 19: Undefined variable: token (View: C:\xampp\htdocs\laravel-imsur\resources\views\auth\reset.blade.php)

y mi reset. blade.php es este soy nuevo en lo que consierne laravel y ps no se que hacer

@extends(‘app’) @section(‘content’)

    <div class="contact-content">         <div class="top-header span_top">             <div class="logo">                 <a href="index.html"><img src="images/logo.png" alt="" /></a>                 <p>Movie Theater</p>             </div>         <div class="clearfix"></div>         </div>          <div class="main-contact">              <h3 class="head">CONTACT</h3>              <p>WE'RE ALWAYS HERE TO HELP YOU</p>              <div class="contact-form">                  {!!Form::open(['url' => '/password/reset'])!!}                     <div class="col-md-6 contact-left">                         {!!Form::hidden('token',$  token,null)!!}                          {!!Form::text('email',null,['value' => "{{old('email')}}"])!!}                          {!!Form::password('password')!!}                         {!!Form::password('password_confirmation')!!}                     </div>                      {!!Form::submit('Restablecer contraseña')!!}                  {!!Form::close()!!}             </div>         </div>     </div> @endsection 

¿como hacer que al momento de ingresar datos a la base de datos se actualice en la vista?

Tengo una aplicación móvil donde simulo un banco, al momento de realizar un deposito(Que es otra actividad) lo guarda en la base de datos y entonces cree un método para que me regresara los datos del deposito y mostrarlo en un textview(MainActivity). Mi problema es que no veo reflejado el deposito en el textview hasta que entre a otra pestaña de la aplicación y regrese a la MainActivity. Nota: El metodo lo mando a llamar en el onCreate.

Metodo para mandar a traer los datos:

 public void movementsIngresos() {      String action = "http://localhost:8000/depositos";     JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, action, null, new Response.Listener<JSONObject>() {         @Override         public void onResponse(JSONObject response) {              try {                  JSONArray mJsonArray = response.getJSONArray("results");                 for (int i = 0; i < mJsonArray.length(); i++) {                     //Globals.category = new String[mJsonArray.length()];                     JSONObject mJsonObject = mJsonArray.getJSONObject(i);                    deposito += mJsonObject.getInt("cantidad");                 }              } catch (JSONException e) {                 e.printStackTrace();             }         }     },              new Response.ErrorListener() {                 @Override                 public void onErrorResponse(VolleyError error) {                  }             }){         @Override         public Map getHeaders() throws AuthFailureError {             HashMap headers = new HashMap();             headers.put("X-Requested-With", "XMLHttpRequest");             headers.put("Authorization", "XXXXXX"));             return headers;         }      };     queue.add(request); } 

Evitar duplicar mi vista previa en modal javascript

al manda mis datos a la vista previa esta bien, así como al inserta los datos pero al dar al boton “no” este cierra la vista previa lo cual esta bien pero al querer guardar de nuevo en el modal se duplica la información y así sucesivamente ¿como puedo evitar eso ?

introducir la descripción de la imagen aquí

en esta imagen muestro mi vista previa correcta al dar al boton “no” para regresar al formulario a corregir informacion y volver a guardar me duplica la informacion, solo en el modal ya que al guardar asi solo se guarda una vez no duplica en la base de dato

foto donde duplica la info: introducir la descripción de la imagen aquí

como puedo evitar esto les uestro mi codigo en HTML:

  <button type="submit" class="tab-btn-sumbit" id="guardar">Si</button>    <button type="reset" class="tab-btn-cancel" id="cancelar">No</button> 

Y MI CODIGO EN JAVASCRIPT :

     $  (document).on("click","#cancelar",function(e){      closeModal();     });    $  (document).on("click","#guardar",function(e){       $  ('.cotizador_box').hide();      $  ('.loader').show();      $  .ajax({           type:"POST",        url:"<?=URL?>velada/Guardar",               data:$  ('#form-velada').serialize(),       dataType:"json",          success:function(data){         closeModal();        $  ('#messages').html(data.message);        $  ('#resumen').html('');     }      });   }); 

AYuDA ;V