Jtree, cuando se selecciona un elemento, se muestra el valor de una

Básicamente, tengo un JComboBox y en la actualidad, el valor seleccionado se muestra a continuación, junto al cuadro combinado en un cuadro de texto.

Sin embargo, lo que me gustaría hacer, es en la selección de un valor en el cuadro combinado – un valor diferente se muestra en el cuadro de texto (Este valor mostrado es específico para el valor seleccionado en el cuadro combinado.

Por lo que en este caso me he tamaños en el cuadro combinado, y quiero que los costos se muestran en el campo de texto.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ComboBox{
  JComboBox combo;
  JTextField txt;
  public static void main(String[] args) {
    ComboBox b = new ComboBox();
  }

  public ComboBox(){
    String course[] = {"18x18cm (7x7inches)","18x20cm (7x8inches)",};
    JFrame frame = new JFrame("Cost Calculator");
    JPanel panel = new JPanel();
    combo = new JComboBox(course);
    combo.setBackground(Color.white);
    combo.setForeground(Color.black);
    txt = new JTextField(25);
    panel.add(combo);
    panel.add(txt);
    frame.add(panel);
    combo.addItemListener(new ItemListener(){
      public void itemStateChanged(ItemEvent ie){
        String str = (String)combo.getSelectedItem();
        txt.setText(str);
      }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400,200);
    frame.setVisible(true);
  }
}

Así que mi pregunta es ¿cómo hago esto?

  • Ya parecen saber cómo recuperar el valor seleccionado en el cuadro combinado, y de cómo actualizar el textfield cuando este cambia la selección. Entonces, ¿cuál es la pregunta ? Cómo recuperar el costo cuando usted tiene el tamaño ? Que es algo que no podemos responder con el código que has publicado
  • Ahh, ver, básicamente, en vez de tener una copia idéntica del valor del combobox se replica y se muestran en el textfield, quiero seleccione un valor de la lista desplegable y, a continuación, tienen un valor que se asocia con la que aparece en el campo de texto. Por ejemplo. En la actualidad (comboxbox valor=muestra el texto): 7x7cm=7x7cm Lugar quiero tener: 7x7cm=£100
  • Esa era la parte que me entiende. Pero, ¿cómo se supone que vamos a darle una respuesta con la información disponible en la pregunta … eres el único que sabe cómo convertir el 7*7cm a 100 libras
  • Bueno, he actualizado el post con el guion completo. Así que, básicamente, para los tres valores en el post original de la primera sería igual a £122, segundo £114, tercer £116. La forma en que los precios de las obras con el tamaño no es exactamente constante (sólo tengo una tabla de «altura a la anchura» con los costos de dentro). Así que, ¿tengo que hacer una cadena de valores en el actionlistener que se mostrará en el campo de texto? Así que si «18x18cm (7x7inches)» es 0 en el combobox de la cadena, a continuación, «£122» también es 0 ya que es el primer valor, de modo que se mostrará. Lo siento si no soy muy claro ):
  • Puede utilizar java.util.Mapa para esto, supongo que si he entendido tu pregunta y comentarios en el sentido correcto. Conseguir lo que se haya seleccionado en el Jtree y obtener el valor relacionado en el Mapa para mostrar que en el JTextField.
InformationsquelleAutor Pebbs | 2012-02-12

2 Kommentare

  1. 2

    Lo que debe hacer es hacer una nueva clase, de modo que usted puede guardar los datos para el Jtree y el JTextField atados el uno al otro.

    class MyClass{
        private String comboStr;
        private String textStr;
    
        public MyClass{
            comboStr = "this goes in my combobox";
            textStr = "this goes in my textfield";
         }
    
        public String toString(){
            return comboStr;
        }
    
        public String getText(){
             return textStr;
        }
    }

    (Necesita el método toString() de modo que cada elemento en la lista desplegable muestra el texto correcto.)

    A continuación, en el oyente, puede utilizar el siguiente para establecer el texto de la JTextField.

    MyClass myObj = (MyClass)combo.getSelectedItem();
    txt.setText(myObj.getText());
  2. 0

    Con el fin de hacer el JComboBox diferente a la pantalla de texto, decir Google, cuando hay un objeto que no tiene información al respecto, deberá reemplazar el toString() método en la clase que se añade a la JComboBox. Esto es porque cuando el JComboBox establece, utiliza el toString() método para cada objeto en ella para crear el texto en pantalla.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea