Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

326
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda