Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

322
Views
Si JComboBox es editable, ¿cómo convertir la cadena ingresada al objeto?

Así que tengo esta clase "Miembro":

 package pkgData; import java.io.Serializable; public class Member implements Comparable<Member>, Serializable{ /** * */ private static final long serialVersionUID = 1L; private String name; private String city; public Member(String nameOfMember,String location) { super(); this.name = nameOfMember; this.city=location; } public String getNameOfMember() { return name; } public String getLocationOfMember() { return city; } public void setNameOfMember(String nameOfMember) { this.name = nameOfMember; } @Override public String toString() { return name +", " + city; } @Override public int compareTo(Member o) { int result =this.getNameOfMember().compareTo(o.getNameOfMember()); if(result==0){ result = this.getLocationOfMember().compareTo(o.getLocationOfMember()); } return result; } }

Y tengo un JComboBox que es EDITABLE y el modelo de ComboBox es DefaultComboBoxModel.

Entonces, el problema es que si lanzo el elemento seleccionado:

 Member nameOfMember = (Member)memberModel.getSelectedItem(); if(nameOfMember== null) throw new Exception("please select a name and a location");

Solo verifica si la cadena ingresada está vacía. Si ingreso una cadena como "Nombre, Ubicación", siempre obtengo la excepción de que la Cadena no se puede convertir a Miembro. ¿Qué cadena debo ingresar para que la cadena se pueda convertir a miembro?

Aquí está mi JComboBox:

 private JComboBox<Member> getComboBoxMember() { if (comboBoxMember == null) { comboBoxMember = new JComboBox<Member>(); comboBoxMember.setEditable(true); comboBoxMember.setModel(memberModel); } return comboBoxMember; }

y aquí las variables globales:

 private DefaultComboBoxModel<Member> memberModel; private JComboBox<Member> comboBoxMember;
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

String nameOfMember = (String) memberModel .getSelectedItem();if(nameOfMember==null)throw new Exception("please select a name and a location");else { String[] parts = nameOfMember.split(","); String part1 = parts[0]; // name String part2 = parts[1]; // location Member member=new Member(part1, part2); }
over 4 years ago · Santiago Trujillo Report

0

Método de división y conversión de cadenas

Lo que puede hacer es, en primer lugar, probar si la cadena que obtiene es nula o si coincide bien con su formato. Luego, puede crear un nuevo objeto con estos elementos.

Aquí hay un pequeño código de ejemplo:

 String memberData = (String)memberModel.getSelectedItem(); if(memberData == null || memberData.split(", ")[0].isEmpty() || memberData.split(", ")[1].isEmpty()) { throw new Exception("Data is incorrect, please provide name and location separated with ", "); } Member member = new Member(memberData.split(", ")[0], memberData.split(", ")[1]);

Método JComboBox

Con Java 7 sucedió una nueva posibilidad de extensión a JComboBox , que ahora se puede parametrizar de forma genérica (como para ArrayList s) en la forma JComboBox<Type> . Por lo tanto, los objetos que puede obtener con getSelectedItem() ahora se pueden convertir al tipo genérico que proporcionó en el parámetro JComboBox . El único problema es que, cuando se edita un JComboBox , como en su caso, los datos se convierten en un String simple.

Lo que puede hacer en su método de escucha ( ActionListener ) es lo siguiente:

 class ItemAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { //In case the user has not modified the object Member member = (Member)box.getSelectedItem(); //Just an example here if(member != null) { System.out.println(member.toString()); } } catch(ClassCastException ex) { //In case the object has been modified String data = (String)box.getSelectedItem(); //Apply first method here } } }

Pero el problema con este método es que aún terminas usando el primer método.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!