¿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

Respuesta

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

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);
    }
}

¡Gracias! Si era eso! :D 

Gracias por tu ayuda.

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?

Esencialmente el For seria para que lea la longitud de un Array y recorrerlo.

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas