|
71
|
Programación / Java / Re: llenar un jcombobox usando el método set - get de una clase
|
en: 27 Septiembre 2021, 22:20 pm
|
Amigo eres un crack enserio pero lo que busco es esto , perdón por no poner una imagen antes, no sabia como guardaré los datos del formulario en el que se encuentra jComboBox , para hacer otro formulario que me muestre trabajador vendió mas cual vendió menos -> usado la clase cliente guardare registro de mis clientes Creo que tienes dos JInternalFrame o no? dentro de JFrame... - Puedes hacer que cada vez que insertes un trabajador almacenarlos en una Lista de trabajadores (por ejemplo) y pasar esa lista como parametro al otro JInternalFrame.
ya tienes un boton llamado insertar usalo. - Debes hacer un @Override del metodo @ToString() de la clase Trabajador. como te lo puse en el ejemplo, logrando que solo salga el nombre del trabajador en el JComboBox
- Los JInternaFrame deben hacer composicion de modo que cuando uses el boton insertar, llames a un metodo del JInternalFrame que contiene el JComboBox
/** * @author rubn */ public class FillJComboBoxWithJTextFields extends JFrame { private FrTrabajadores jInternalFrame2 = new FrTrabajadores(); public FillJComboBoxWithJTextFields() { super.setTitle("Fill JComboBox"); super.pack(); super.setSize(650, 420); super.setLocationRelativeTo(null); super. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); super.setVisible(true); this.initBehaviour(); this.configureJInternalFrames(); } private void configureJInternalFrames() { jPanelFormulario. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); jPanelFormulario.add(leftJLabel(this.labelNombre)); jPanelFormulario.add(textField); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelFormulario.add(leftJLabel(this.labelApellido)); jPanelFormulario.add(textField2); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelFormulario.add(leftJLabel(this.labelCorreo)); jPanelFormulario.add(textField3); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelHorizontal.add(this.button); jPanelHorizontal.add(this.limpiar); jPanelFormulario.add(jPanelHorizontal); Stream.of(button, limpiar) .forEach(buttons -> buttons.setBorderPainted(false)); this.jInternalFrame.add(this.jPanelFormulario); jInternalFrame. setSize(new Dimension(300, 250)); jInternalFrame.setIconifiable(true); jInternalFrame.setVisible(true); jDesktopPane.add(this.jInternalFrame); jDesktopPane.add(this.jInternalFrame2); jDesktopPane. setSize(new Dimension(500, 600)); } /** * * Comportamiento del boton donde se extraen los valores de los JTextField * * También listener del botón de limpieza */ private void initBehaviour() { String nombre = textField. getText(). trim(); String apellido = textField2. getText(). trim(); String correo = textField3. getText(). trim(); if (Stream.of(nombre, apellido, correo) . noneMatch(String::isEmpty )) { final Trabajador trabajador = new Trabajador(); trabajador.setNombre(nombre); trabajador.setApellido(apellido); trabajador.setCorreo(correo); this.jInternalFrame2.getjComboBox().addItem(trabajador); } else { JOptionPane. showMessageDialog(this, "Llenar todos los inputs", } }); this. limpiar. addActionListener((ActionEvent event ) -> { this.jInternalFrame2.getjComboBox().removeAllItems(); Stream.of(textField, textField2, textField3) . forEach((JTextField jTextField ) -> jTextField. setText("")); }); } return panel; } public static void main (String[] args ) { try { UIManager. setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); } new Thread(FillJComboBoxWithJTextFields ::new). start(); } }
JInternalFrame de Trabajadorespackage com.forotest; import javax.swing.*; import java.awt.*; /** * @author rubn */ private JComboBox<Trabajador> jComboBox = new JComboBox<>(); public FrTrabajadores() { panel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); panel.add(FillJComboBoxWithJTextFields.leftJLabel(this.jLabel)); panel. add(Box. createVerticalStrut(10)); panel.add(this.jComboBox); super.add(panel); super.setIconifiable(true); super.setVisible(true); super.setBounds(320,0,0,0); } public JComboBox<Trabajador> getjComboBox() { return jComboBox; } }
|
|
|
73
|
Programación / Scripting / Re: Duda con Uploader y NodeJS
|
en: 27 Septiembre 2021, 03:38 am
|
Buenas,
Tengo unas dudas respecto a un uploader de archivos a una web (servidor), lo que viene a ser la web de html/php/jquey seria todos los datos que te muestran en tiempo real, y quiero saber si para mantener la web en tiempo real hacerlo con nodejs o con objetos de javascript. Al igual que subir los archivos al servidor donde se guardaran los archivos, si hacer que se suban con nodejs o objetos javascript.
¿tendria que tener la web alojada en servidor nodejs para mantener todo a tiempo real al igual que subir archivos a servidor?
Cualquier informacion adicional lo agradeceria.
Saludos
Si necesitas subir un archivo a un servidor, este por razones claras, debe estar desplegado en internet. incluso en tu local tambien puedes tener desplegado tu servidor con node.js ( es decir tu backend ) y subir tus files ahi ( y dichos archivos estaran alojados en tu pc ) Ahora el cliente, contruyete uno con js / html / css. Tira por Angular o React ( esto sera tu client-side / lado del cliente que conectara por medio de una interface UI a tu backend (node) que es lo que deseas)
|
|
|
74
|
Programación / Java / Re: llenar un jcombobox usando el método set - get de una clase
|
en: 25 Septiembre 2021, 22:53 pm
|
en el formulario 2 quiero que en el jcombobox aparezcan los nombres que inserte en e formulario 1
El Formulario uno tienes JTextfields ? Debes obtener los valores de esos campos de cada uno y luego llenar el JComboBox. Mira la linea 51 a 71, donde usamos los valores del JTextField para llenar el JComboBox, * Linea 57, 58, 59 el método getText() contiene el valor de el input o JTextField class Trabajador { return nombre; } public void setNombre (String nombre ) { this.nombre = nombre; } return apellido; } public void setApellido (String apellido ) { this.apellido = apellido; } return correo; } public void setCorreo (String correo ) { this.correo = correo; } @Override final StringBuilder sb = new StringBuilder(); sb.append(this.nombre); return sb.toString(); } }
/** * @author rubn */ public class FillJComboBoxWithJTextFields extends JFrame { private JComboBox<Trabajador> jComboBox = new JComboBox<>(); public FillJComboBoxWithJTextFields() { super.add(jPanel); jPanel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); jPanel.add(this.leftJLabel(this.labelNombre)); jPanel.add(textField); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.leftJLabel(this.labelApellido)); jPanel.add(textField2); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.leftJLabel(this.labelCorreo)); jPanel.add(textField3); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.jComboBox); jPanel. add(Box. createVerticalStrut(10)); jPanelHorizontal.add(this.button); jPanelHorizontal.add(this.limpiar); jPanel.add(jPanelHorizontal); Stream.of(button, limpiar) .forEach(buttons -> buttons.setBorderPainted(false)); super.pack(); super.setLocationRelativeTo(null); super.setVisible(true); super. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); this.initBehaviour(); } /** * * Comportamiento del boton donde se extraen los valores de los JTextField * * También listener del botón de limpieza */ private void initBehaviour() { String nombre = textField. getText(). trim(); String apellido = textField2. getText(). trim(); String correo = textField3. getText(). trim(); if (Stream.of(nombre, apellido, correo) . noneMatch(String::isEmpty )) { final Trabajador trabajador = new Trabajador(); trabajador.setNombre(nombre); trabajador.setApellido(apellido); trabajador.setCorreo(correo); this.jComboBox.addItem(trabajador); } else { JOptionPane. showMessageDialog(this, "Llenar todos los inputs", } }); this. limpiar. addActionListener((ActionEvent event ) -> { this.jComboBox.removeAllItems(); Stream.of(textField, textField2, textField3) .forEach(text -> { text.setText(""); }); }); } return panel; } public static void main (String[] args ) { new Thread(FillJComboBoxWithJTextFields ::new). start(); } }
|
|
|
75
|
Comunicaciones / Android / Re: Ayuda para recuperar aplicaciones de celular
|
en: 13 Septiembre 2021, 20:06 pm
|
Pero desde el móvil he de darle para que pase la información al PC y en la pantalla no se ve nada. ¿He de volver a ponerle la tarjeta SIM? Para hacer esto si es que lo consigo.
El proceso es mas complejo, yo creo que es mejor que lo lleves a un servicio tecnico. * Cosas como que le hagan un resplado a la ROM creo que seria lo primero. * Tu podrias quizas intentar lograr conexion por medio de "adb"
|
|
|
78
|
Programación / Java / Re: Ayuda con ObjectOutputStream!
|
en: 7 Septiembre 2021, 06:28 am
|
Usa GeShIPara escribir objetos de manera binaria con ObjectInput/Output Stream, esta diseñada para escribir solo una vez socio, sino tendrias que reimplemantar una clase tu mismo. /** * @implSpec THREAD-SAFE * @autor rub'n */ @Value @Builder }
/** * @autor rub'n */ @Slf4j public class ConObjectIOStream { private static final String RUTA_FICHERO = "./temporal.tmp"; private ConObjectIOStream() { } /** * Para leer desde el fichero * * @return List<Persona> */ private static List<Persona> readFromFile() { final List<Persona> listaPersona = new CopyOnWriteArrayList<>(); final Path pathAlimento = Paths.get(RUTA_FICHERO); if(pathAlimento.toFile().exists()) { synchronized (ConObjectIOStream.class) { //en caso de que readFrom se invoque desde un Thread() final Object object = ob. readObject(); if (object instanceof Persona) { listaPersona.add((Persona) object); } } } ob.reset(); //no hacer nada EOFException log.error("Error al leer {}", e); } } else { log.error("Error al leer del fichero {}", pathAlimento.toFile()); } return List. copyOf(listaPersona ) .stream() .collect(Collectors.toList()); } /** * Para escribir en el fichero */ private static void writePersonToTempFile(final Persona ...persona) { final Path pathTem = Paths.get(RUTA_FICHERO); try (final OutputStream out = Files. newOutputStream(pathTem, StandardOpenOption. CREATE); synchronized (ConObjectIOStream.class) { .forEach((Persona p) -> writeObject(ob, p)); } ob.reset(); log.error("Error al escribir en archivo {} ", e); } } try { ob.writeObject(persona); log.error("Error al escribir objecto {} ", e); } } public static void main (String[] args ) { final Persona persona1 = Persona.builder() .nombre("ruben") .apellido("La muerte") .correo("rrara@gmail.com") .build(); final Persona persona2 = Persona.builder() .nombre("El loco") .apellido("La locura") .correo("crazyGuy@gmail.com") .build(); /* * Para escribir */ ConObjectIOStream.writePersonToTempFile(persona1, persona2); /* * Leer */ ConObjectIOStream.readFromFile() .forEach((Persona persona) -> log.info("Persona {}", persona)); } }
|
|
|
80
|
Programación / Java / Re: Como leer archivos PDF en Android
|
en: 5 Septiembre 2021, 18:30 pm
|
Y con el iText que pasa? Dices que también se pueden mostrar los pdf, como se pueden mostrar como con cualquier otra librería ?
* Perdoname tu aqui, te complique, la api itext tu le pasas la salida de tu pdf. la ruta mejor dicho. Es posible que me compartas el proyecto asi por privado?
|
|
|
|
|
|
|