¿Cómo puedo solucionar este problema del código en Eclipse?
Tengo el código de la interfaz pero en una parte de código me sale un error y no me esta trayendo lo que selecciono de un ComboBox a un JTextField y tengo este error:
Ese es todo el código.
¿Qué puedo hacer ahí?
2 Respuestas
No es todo el código, ya que no se ven las librerías que has declarado, puede que ese esa tu error, te recomiendo que des un vistazo en la API JAVA y sepas cual es la sintaxis de la clase JComboBox
- Compartir respuesta
El problema es de que la variable que creaste Opc siempre va a ser 0 (cero) por que no hay nadie que la cambie, por lo que nunca vas a poder ingresar a ningún case
Solución: Dentro de los paréntesis de switch coloca lo siguiente
ComboSeleccion. GetSelectedIndex()
Por lo que quedaría de esta forma
switch(ComboSeleccion.getSelectedIndex()){ case 1: // Aca tu Codigo case 2: // Aca tu Codigo case 3: // Aca tu Codigo // etc etc }
El JCombobox tiene tiene dos metodos que permiten obtener el elemento seleccionado, puede ser por indice o por valor, aca un ejemplo:
ComboSeleccion.getSelectedIndex() // Devuelve: 0, 1, 2, 3, etc ComboSeleccion. GetSelectedItem() // Devuelve: Opc 1, Opc 2, etc
Si necesitas mas informacion podes hecharle un ojo a la documentacion, aca te dejo el link
https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
No me funciona como tu me dices que lo haga, mira lo dejo así:
char Opc = 0;
switch(ComboSeleccion. getSelectedIndex()) {
case 1 :
EtiResultado.setText("DCL ");
break;
case 2 :
EtiResultado.setText("MDX ");
break;
case 3 :
EtiResultado.setText("MMM ");
break;
case 4 :
EtiResultado.setText("DLR ");
break;
case 5 :
EtiResultado.setText("DLP ");
break;
default :
EtiResultado.setText("Seleccion Invalida intente de nuevo ");
break;
}
Hola, ya cambie todo el código pero cuando selecciono algo del combobox en todas las opciones me trae lo mismo, ¿qué tengo mal? Ayuda!.
CÓDIGO:
package Interfaz;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class ComboBoxDemo extends JFrame {
private String[] Languages = {"Seleccione.","Opc 1.", "Opc 2.", "Opc 3.", "Opc 4.", "Opc 5."};
private JTextField heading = new JTextField("Top TestRails - ");
private JTextField selectedLanguageField = new JTextField(15);
private JComboBox boxOfLanguages = new JComboBox();
public ComboBoxDemo() {
for (int i = 0; i < Languages.length; i++) {
boxOfLanguages.addItem(Languages[i]);
}
heading.setEditable(false);
boxOfLanguages.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
selectedLanguageField.setText("You selected : " + ((JComboBox)event.getSource()).getSelectedItem());
int Opc = 0;
switch( Languages.length) {
case 1: selectedLanguageField.setText("DCL");
break;
case 2: selectedLanguageField.setText("DLP");
break;
case 3: selectedLanguageField.setText("DLR");
break;
case 4: selectedLanguageField.setText("MDX");
break;
case 5: selectedLanguageField.setText("MMM");
break;
default: selectedLanguageField.setText("Seleccione De Nuevo");
break;
}
}
});
this.setLayout(new FlowLayout());
this.add(heading);
this.add(selectedLanguageField);
this.add(boxOfLanguages);
}
public static void main (String[] args) {
JFrame frame = new ComboBoxDemo();
frame.setTitle("Combo Box Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Disculpa la demora casi no entro a la pagina y no había revisado mi correo.
Pasando al código, el problema sigue estando dentro del switch, el código que esta dentro
switch(Languages.length) { // < Esta parte // }
toda la vida devolverá 6 por que estas pidiendo la longitud del Array Languages, por lo que para que funciones tenes que cambiarlo por
boxOfLanguages.getSelectedIndex()
quedaría de la siguiente forma
switch(boxOfLanguages.getSelectedIndex()){ // Codigo aca }
Aca te dejo el codigo completo
package Interfaz; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JTextField; public class ComboBoxDemo extends JFrame { private String[] Languages = {"Seleccione.","Opc 1.", "Opc 2.", "Opc 3.", "Opc 4.", "Opc 5."}; private JTextField heading = new JTextField("Top TestRails - "); private JTextField selectedLanguageField = new JTextField(15); private JComboBox boxOfLanguages = new JComboBox(); public ComboBoxDemo() { for (int i = 0; i < Languages.length; i++) { boxOfLanguages.addItem(Languages[i]); } heading.setEditable(false); boxOfLanguages.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { selectedLanguageField.setText("You selected : " + ((JComboBox)event.getSource()).getSelectedItem()); int Opc = 0; switch(boxOfLanguages.getSelectedIndex()) { case 1: selectedLanguageField.setText("DCL"); break; case 2: selectedLanguageField.setText("DLP"); break; case 3: selectedLanguageField.setText("DLR"); break; case 4: selectedLanguageField.setText("MDX"); break; case 5: selectedLanguageField.setText("MMM"); break; default: selectedLanguageField.setText("Seleccione De Nuevo"); break; } } }); this.setLayout(new FlowLayout()); this.add(heading); this.add(selectedLanguageField); this.add(boxOfLanguages); } public static void main (String[] args) { JFrame frame = new ComboBoxDemo(); frame.setTitle("Combo Box Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); frame.setVisible(true); } }
Ahora tengo otra pregunta como puedo ponerle un fondo pero desde el mismo código, osea sin crear otra clase si no que desde este mismo código pueda subir la imagen.
¿Se puede?
Esa estructura Switch - Case, se puede cambiar por una estructura If - else y que tenga un for?
Si?
Como?
Si se puede cambiar por un if que seria más o menos así
int indiceBuscado = boxOfLanguages.getSelectedIndex(); if(indiceBuscado == 1){ // Codigo }else if(indiceBuscado == 2){ // Codigo }else if(indiceBuscado == 3){ // Codigo } // etc... etc...
Para leer la longitud de un array podes usar length
boxOfLanguages.length
- Compartir respuesta