Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rub'n

#611
Java / Re: Evitar duplicados en Jtable
25 Marzo 2019, 00:16 AM
Cita de: Lesterfbt en 22 Marzo 2019, 04:01 AM
Buenas noches,

Necesito ayuda con mi proyecto en Java lo tengo prácticamente finalizado pero esto es lo único que me tiene estancado,

Quiero evitar duplicados de la columna código de cliente de un Jtable, al darle clic al botón "Guardar", evalué si no hay código con ese valor lo guarde en la tabla si ya existe este código muestre la excepción que "Código del cliente ya existe" y no guarde.

Les agradecería su ayuda,

Saludos.

Si se puede pero muestra algo de código a ver como la tienes?...

>:D

Código (java) [Seleccionar]
package foro;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

/**
* @Autor rub´n y google
*/
public class JTableAvoidDuplicados extends JFrame {

    private final DefaultTableModel defaultTableModel = new DefaultTableModel();
    private final JTable table = new JTable(defaultTableModel);
    private final JScrollPane jScrollPane = new JScrollPane(table);
    private final JButton button = new JButton("Aceptar");
    private final JTextField textField = new JTextField();

    public JTableAvoidDuplicados() {
        init();

        setSize(500, 100);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    private void init() {
        final JComponent panelNorte = getPanelNorte();
        final JComponent panelSur = getPanelSur();
        panelNorte.add(panelSur, BorderLayout.SOUTH);
        add(panelNorte);
    }

    private JComponent getPanelNorte() {
        final JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        final TitledBorder titledBorder = new TitledBorder("PoC duplicados en JTable");
        titledBorder.setTitleFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
        panel.setBorder(titledBorder);
        panel.add(jScrollPane, BorderLayout.NORTH);
        /**
         * Filas de la table
         */
        defaultTableModel.addColumn("Codigo");
        defaultTableModel.addRow(new Object[]{"codigo-0000"});
        defaultTableModel.addRow(new Object[]{"codigo-0001"});
        defaultTableModel.addRow(new Object[]{"codigo-0002"});
        defaultTableModel.addRow(new Object[]{"codigo-0003"});

        return panel;
    }

    private JComponent getPanelSur() {
        final JPanel panelSur = new JPanel();
        panelSur.setLayout(new BoxLayout(panelSur,BoxLayout.X_AXIS));
        panelSur.setBorder(BorderFactory.createEmptyBorder(10, 0, 5, 0));
        panelSur.add(new JLabel("Introduce codigo: "));
        panelSur.add(Box.createHorizontalStrut(10));
        panelSur.add(textField);
        panelSur.add(Box.createHorizontalStrut(10));
        panelSur.add(button);
        initBehaviour();
        return panelSur;
    }

    private void initBehaviour() {
        button.addActionListener(e -> tabla(table, textField));
    }

    private void tabla(JTable tabla, JTextField jTextField) {
        String s = "";
        boolean exists = false;
        for (int i = 0; i < tabla.getRowCount(); i++) {
            s = tabla.getValueAt(i, 0).toString().trim();

            if (jTextField.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "Introduce un valor");
                break;
            } else if (jTextField.getText().equals(s)) {
                exists = true;
                break;

            }
        }
        if (!exists) {
            final DefaultTableModel dd = (DefaultTableModel) tabla.getModel();
            final List<String> lista = new ArrayList<>();
            final String codigo = jTextField.getText();
            if (!codigo.equals("")) {
                lista.add(jTextField.getText());
                dd.addRow(lista.toArray());
            }
        } else {
            JOptionPane.showMessageDialog(null, "Codigo existente.");
        }
    }

    public static void main(String... gaga) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        new Thread(JTableAvoidDuplicados::new).start();
    }

}


#612
Cita de: juligarc10 en 23 Marzo 2019, 18:20 PM
Hola amigos, estoy intentando generar números aleatorios entre el 0 y el 27 (estos incluídos), pero quiero que cada vez que llame al método para generarlos, que genere uno distinto. En realidad el fin de generar numeros aleatorios, es para devolver objetos aleatorios, los cuales están creados en otra parte del código. Aquí les dejo mi código:

public Ficha darFicha(){
Random aleatorio = new Random(System.currentTimeMillis());
       // Producir nuevo int aleatorio entre 0 y 27
       int intAleatorio = aleatorio.nextInt(27);

       // Refrescar datos aleatorios, pero no me esta funcionando, o eso creo
       aleatorio.setSeed(System.currentTimeMillis());
       
//      Esto es parte del programa, para generar objetos aleatorios
       Ficha toret=new Ficha(0,0);
       toret=fichas[intAleatorio];
       return toret;
}

Gracias, y un saludo de antemano.

Usar mejor SecureRandom para generar números pseudo aleatorio mas estrictos

Como estará compuesta la clase Ficha?

Si quieres números que no se repitan pues seria mejor que te crees un array de 0 al 27 y los recorres, y podrías usar el algoritmo shuffle también.



PD... tildes
#613
otra es por medio de clases internas anónimas, para no llenar tu clase con implementacion de interfaces

Ejemplo con una expresión lambda, mínimo java 8 debes tener.

Código (java) [Seleccionar]

final JButton button = new JButton("Click Me!");
button.addActionListener(e -> {
JOptionPane.showMessageDialog(null,"Click");
});
#614
Java / Re: Problemas con JOptionPane
20 Marzo 2019, 16:18 PM
Cita de: JaimeN en 20 Marzo 2019, 16:15 PM
muchas gracias por tu graaaan ayuda rub'n

Yo no te ayude, dale gracias al popular CalgaryCorpus,

Yo estoy acostumbrado a poner null siempre jajaja. Pero no te dije XD
#615
Java / Re: Problemas con JOptionPane
19 Marzo 2019, 23:34 PM
Cita de: JaimeN en 19 Marzo 2019, 18:53 PM
estoy llamando con un boton, el codigo funciona, el problema es que me muestra en segundo plano, es decir detrás del jframe. esa es mi codigo:
String valor=JOptionPane.showInputDialog(this,"INGRESE LA CATIDAD DE PRODUCTO!").toString();

Que desastre tendrás ahi?  >:D
#616
Java / Re: Problemas con JOptionPane
19 Marzo 2019, 18:15 PM
Muestra codigo
#617
spcruzaley tal cual dog, por ahí iba la cosa saludos.

Código (java) [Seleccionar]
public enum Contrato {

   INDEFINIDO("indefinido"),
   TEMPORAL("temporal"),
   FORMACION("formacion"),
   PRACTICAS("practicas");

   private final String value;

   Contrato(final String value) {
       this.value = value;
   }

   public String getValue() {
       return value;
   }

   public static Contrato getContrato(final String tipoContrato) {
       Contrato contrato = null;
       for(final Contrato tmp : Contrato.values()) {
           /**
            * a lowercase para coincidir con las constantes
            */
           if(tmp.getValue().equals(tipoContrato.toLowerCase())) {
               contrato = tmp;
               break;// se sale de las iteracioes con la primera coincidencia
           }
       }
       return contrato;
   }
}


Código (java) [Seleccionar]
/**
*
*/
public class Empresa {

   private static final Logger LOGGER = Logger.getLogger(Empresa.class.getSimpleName());
   private static final Scanner LEER = new Scanner(System.in);
   private String tipo;

   public Empresa() {
       try {
           LOGGER.info("Introduce Tipo de contrato :D");
           this.tipo = LEER.nextLine();
           final Contrato contrato = Contrato.getContrato(tipo);
           switch (contrato) {
               case TEMPORAL:
                   LOGGER.info("Temporal");
                   break;
               case FORMACION:
                   LOGGER.info("Formacion");
                   break;
               case PRACTICAS:
                   LOGGER.info("Practicas");
                   break;
               case INDEFINIDO:
                   LOGGER.info("Indefinido");
                   break;
           }
       } catch (final NullPointerException ex) {
           LOGGER.severe("No existe " + this.tipo);
       }

   }

   @Override
   public String toString() {
       return "Lo que quieres hacer aqui esta medio bull$shit, pero si quieres explicate mejor XD";
   }

   public static void main(String... blalb) {
       new Empresa();
   }
}
#618
Cuando llegue a la guarida, te ayudo dog, ese enum Contrato es mejor desarrollarlode otra manera, con un método estático dentro que consulte, si posee esa constante o no, logrando mayor legibilidad, que como lo estás haciendo , es un mero desastre  >:D
#619
Postea los enum aquí a ver cómo los tienes.
#620
Java / Re: Spring, struts e hibernate
9 Marzo 2019, 14:05 PM
Cita de: Raijin en  7 Marzo 2019, 22:34 PM
hola, he empezado a hacer unas practicas en un proyecto viejo de hace 15 años que usa Spring version 2 o 3 (sin anotaciones sino que usan xml), struts compatibles con el spring; y una version de hibernate que no usa anotaciones sino una cosa anterior (comentarios el javadoc parecidos a este:@hibernate.class).

Necesito buscar tutoriales, manuales o libros, da igual que sean en español o en ingles, sobre estas versiones de spring, struts e hibernate, que por ser versiones tan viejas no encuentro nada o no se como buscarlo.


Que lastima perder el time, con una api tann viejaa...  :xD