Añadida funcionalidad checkbox

This commit is contained in:
Guillermo Roche 2019-11-07 22:53:35 +01:00
parent a6afa6adb6
commit ebbbcfcb10
5 changed files with 96 additions and 31 deletions

1
bin/.gitignore vendored
View File

@ -1,2 +1,3 @@
/VistaControlador/ /VistaControlador/
/PedirDatos/ /PedirDatos/
/Logica/

View File

@ -12,21 +12,17 @@ public class Gestion{
Gestion.total=0; Gestion.total=0;
} }
public void aniadirGasto(String nombre, int dinero) {
this.gestiones.add(new Transaccion(nombre, dinero));
this.suma+=dinero;
Gestion.total+=total;
}
public void aniadirGasto(Transaccion transaccion) { public void aniadirGasto(Transaccion transaccion) {
this.gestiones.add(transaccion); this.gestiones.add(transaccion);
this.suma+=transaccion.getDinero();
Gestion.total+=transaccion.getDinero();
} }
public int getSuma() { public int getSuma() {
return this.suma; return this.suma;
} }
public int getTotal() { public static int getTotal() {
return Gestion.total; return Gestion.total;
} }
@ -36,8 +32,15 @@ public class Gestion{
public void alterarVisibilidad(boolean visibilidad, int elemento) { public void alterarVisibilidad(boolean visibilidad, int elemento) {
if(this.gestiones.get(elemento).alterarVisivilidad(visibilidad)) { if(this.gestiones.get(elemento).alterarVisivilidad(visibilidad)) {
if(this.gestiones.get(elemento).getVisivilidad()) {
this.suma+=this.gestiones.get(elemento).getDinero();
Gestion.total+=this.gestiones.get(elemento).getDinero();
}else {
this.suma-=this.gestiones.get(elemento).getDinero(); this.suma-=this.gestiones.get(elemento).getDinero();
Gestion.total-=this.gestiones.get(elemento).getDinero(); Gestion.total-=this.gestiones.get(elemento).getDinero();
} }
} }
}
} }

View File

@ -2,9 +2,16 @@ package VistaControlador;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
public class Controlador implements ActionListener{ import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import Logica.Gestion;
import Logica.Transaccion;
public class Controlador implements ActionListener,ChangeListener{
private Vista vista; private Vista vista;
public Controlador(Vista vista) { public Controlador(Vista vista) {
@ -13,6 +20,7 @@ public class Controlador implements ActionListener{
} }
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(this.vista.boton.getActionCommand())) {
String nombre=JOptionPane.showInputDialog("Introduce un nuevo gasto o ingreso"); String nombre=JOptionPane.showInputDialog("Introduce un nuevo gasto o ingreso");
if(nombre.equals("")) { if(nombre.equals("")) {
JOptionPane.showMessageDialog(null, "Debe introducir algo", "error", JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(null, "Debe introducir algo", "error", JOptionPane.WARNING_MESSAGE);
@ -26,15 +34,44 @@ public class Controlador implements ActionListener{
try { try {
this.vista.aniadirElemento(nombre, Integer.parseInt(dinero)); this.vista.aniadirElemento(nombre, Integer.parseInt(dinero));
this.vista.menu.total.setText(String.valueOf(Gestion.getTotal()));
this.vista.menu.total.revalidate();
this.vista.menu.total.repaint();
this.aniadirListeners();
}catch (NumberFormatException ex) { }catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Debe introducir un numero", "error", JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(null, "Debe introducir un numero", "error", JOptionPane.WARNING_MESSAGE);
} }
}else {
JCheckBox pulsado=(JCheckBox)e.getSource();
for(int i=0;i<vista.gestiones.getElementos().size();i++) {
if(vista.gestiones.getElementos().get(i).toString().equals(pulsado.getText())) {
vista.gestiones.alterarVisibilidad(!vista.gestiones.getElementos().get(i).getVisivilidad(), i);
this.vista.menu.total.setText(String.valueOf(Gestion.getTotal()));
this.vista.menu.total.revalidate();
this.vista.menu.total.repaint();
}
}
}
} }
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
JCheckBox pulsado=(JCheckBox)e.getSource();
for(Transaccion transaaccio:vista.gestiones.getElementos()) {
if(transaaccio.toString().equals(pulsado.getText())) {
transaaccio.alterarVisivilidad(false);
}
}
}
private void aniadirListeners() { private void aniadirListeners() {
vista.boton.addActionListener(this); vista.boton.addActionListener(this);
for(JCheckBox check:this.vista.transacciones) {
check.addActionListener(this);
}
} }
} }

View File

@ -1,27 +1,39 @@
package VistaControlador; package VistaControlador;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTabbedPane; import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import Logica.Gestion;
public class Menu extends JFrame{ public class Menu extends JFrame{
protected JPanel panelCentral; protected JPanel panelCentral;
protected JTabbedPane pestania; protected JTabbedPane pestania;
protected Vista ingresos; protected Vista ingresos;
protected Vista gastos; protected Vista gastos;
protected JTextArea total;
public Menu() { public Menu() {
init(); init();
} }
private void init() { private void init() {
this.setLayout(new GridBagLayout());
GridBagConstraints constrain=new GridBagConstraints();
this.ingresos=new Vista(this); this.ingresos=new Vista(this);
this.gastos=new Vista(this); this.gastos=new Vista(this);
this.panelCentral=new JPanel(); this.panelCentral=new JPanel();
this.pestania=new JTabbedPane(); this.pestania=new JTabbedPane();
this.panelCentral.add(pestania); constrain.fill=GridBagConstraints.VERTICAL;
constrain.gridx=0;
constrain.gridy=0;
constrain.weightx=2;
this.panelCentral.add(pestania,constrain);
this.pestania.addTab("Ingresos", ingresos); this.pestania.addTab("Ingresos", ingresos);
this.pestania.addTab("Gastos", gastos); this.pestania.addTab("Gastos", gastos);
getContentPane().add(pestania); getContentPane().add(pestania);
@ -32,6 +44,13 @@ public class Menu extends JFrame{
setLocationRelativeTo(null); setLocationRelativeTo(null);
Controlador controlador=new Controlador(this.ingresos); Controlador controlador=new Controlador(this.ingresos);
Controlador controlador2=new Controlador(this.gastos); Controlador controlador2=new Controlador(this.gastos);
constrain.fill=GridBagConstraints.HORIZONTAL;
constrain.gridx=1;
constrain.gridy=0;
constrain.weightx=1;
constrain.weighty=2;
this.total=new JTextArea(String.valueOf(Gestion.getTotal()));
this.add(this.total,constrain);
} }
} }

View File

@ -1,6 +1,8 @@
package VistaControlador; package VistaControlador;
import java.awt.Dimension; import java.awt.Dimension;
import java.util.LinkedList;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JFrame; import javax.swing.JFrame;
@ -11,12 +13,15 @@ import Logica.*;
public class Vista extends JPanel{ public class Vista extends JPanel{
private int x,y; private int x,y;
private Gestion gestiones; protected Gestion gestiones;
protected JButton boton; protected JButton boton;
protected JFrame padre; protected LinkedList<JCheckBox> transacciones;
JPanel cuadro; JPanel cuadro;
JScrollPane panel; JScrollPane panel;
public Vista(JFrame padre) { Menu menu;
public Vista(Menu menu) {
this.transacciones=new LinkedList<JCheckBox>();
this.menu=menu;
this.x=100; this.x=100;
this.boton=new JButton("aniadir"); this.boton=new JButton("aniadir");
this.gestiones=new Gestion(); this.gestiones=new Gestion();
@ -30,13 +35,13 @@ public class Vista extends JPanel{
panel.setVisible(true); panel.setVisible(true);
this.add(panel); this.add(panel);
this.aniadirElemento("asdfa", 0); this.aniadirElemento("asdfa", 0);
this.padre=padre;
} }
public void aniadirElemento(String nombre, int dinero) { public void aniadirElemento(String nombre, int dinero) {
Transaccion transaccion=new Transaccion(nombre, dinero); Transaccion transaccion=new Transaccion(nombre, dinero);
this.gestiones.aniadirGasto(transaccion); this.gestiones.aniadirGasto(transaccion);
JCheckBox check=new JCheckBox(transaccion.toString()); JCheckBox check=new JCheckBox(transaccion.toString());
this.transacciones.add(check);
this.cuadro.add(check); this.cuadro.add(check);
this.y+=28; this.y+=28;
//System.out.println(this.y); //System.out.println(this.y);