Choice Box, dazugehörigen Index anzeigen lasssen

PuhBär

Grünschnabel
Hallo zusammen.

Ich habe eine choice - box mit Strings gefüllt. Nun möchte ich, dass sobald eine Auswahl daraus getroffen wurde, der Index (auch ein String) der sich jeweils dahinter verbirgt, in einem TextPane angezeigt wird.

Kann mir jmd n Beispiel zur Lösung geben, wie mir z.B. jetzt der Index angezeigt wird, der sich hinter "Daten verbirgt"?
-Also wie ich den String der sich hiter "Daten" verbirgt anzeigen kann?

Hier die Box mit den Einträgen:
------
Code:
  String lang[] = {
                 "Daten", "Diverses", "Resultate","Ende"
               };
   .
   .
   .
   private Choice getChoice() {
           if (choice == null) {
               choice = new Choice();
               choice.setBounds(64, 79, 184, 44);
               
               for ( int i = 0; i < lang.length; i++ )
                     choice.addItem( lang[i] );
           }
           return choice;
       }

----

Danke und Bye
 
Hallo!

Es ist in der regel keine gute Praxis AWT Komponenten (Choice) mit Swing Komponenten (JTextPane) zu mixen ... verwende doch eine JComboBox...

Schau mal hier:
Code:
/**
 * 
 */
package de.tutorials;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;

/**
 * @author Tom
 */
public class ChoiceExample extends JFrame {

	private JComboBox comboBox;

	private JTextField textField;

	private String[] data = { "A", "B", "C" };

	public ChoiceExample() {
		super("ChoiceExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		comboBox = new JComboBox(data);
		textField = new JTextField(10);

		comboBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textField.setText((String) comboBox.getSelectedItem());
			}
		});

		add(comboBox, BorderLayout.NORTH);
		add(textField, BorderLayout.SOUTH);

		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new ChoiceExample();
	}

}

Gruß Tom
 
Hi und Danke für Deinen Tip.
Hab gar nicht darüber nachgedacht, dass es sich um eine Swing und eine AWT Komponent handelt. :)


Ich hätte da nur noch eine weitere kleine Frage.

Ich möchte gerne, dass sich hinter den jeweiligen Strings die im Auswahlmenü stehen
(A,B,C) ein weiterer String (ein Text: " Text-A, Text-B, Text-C") verbirgt.
Dieser Text soll dann ausschließlich nur im JTextField angezeigt werden.

Kannst Du / jmd. mir bitte da noch weiterhelfen?

Danke , Gruss und schönes Wochenende.
 
Hilf mir mal auf die Spünge, ich verstehe das nach 3x lesen immer noch nicht.
Wo sollen sich weitere Strings verbergen?
 
Hi, ich glaub ich hab mich einfach n bissel blöde ausgedrückt, sorry ;-)

Kurz gesagt: ich will einfach dass in der JComboBox eine Auswahl getroffen werden kann (hier also: A,B,C). Das ist ja schon erledigt.


Desweiteren soll nun schliesslich im JTextField ein Text auftaucht. Dieser Text bezieht sich jeweils immer auf die Auswahl von der JComboBox.

So soll beispielsweise bei einem Klick auf A (in der JComBobox) der Text-A (in dem JTextField auftauchen).

Ich hoffe ich hab diesmal etwas deutlicher mein Anliegen schildern können ;-)

Gruss
 
Ah OK, dann meinst Du also sowas?

Code:
public class ChoiceExample extends JFrame
{
  private JComboBox  comboBox;

  private JTextField textField;

  MyComboBoxData data1 = new MyComboBoxData("A", "Hund");
  MyComboBoxData data2 = new MyComboBoxData("B", "Katze");
  MyComboBoxData data3 = new MyComboBoxData("C", "Maus");
  
  public ChoiceExample()
  {
    super( "ChoiceExample" );
    setDefaultCloseOperation( EXIT_ON_CLOSE );

    comboBox = new JComboBox();
    comboBox.addItem(data1);
    comboBox.addItem(data2);
    comboBox.addItem(data3);
    
    textField = new JTextField( 10 );

    comboBox.addActionListener( new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        Object selectedItem = comboBox.getSelectedItem();
        if ( selectedItem != null )
        {
          String strDisplayText = ((MyComboBoxData)selectedItem).getTextFieldDisplay();
          textField.setText(strDisplayText);
        }
      }
    } );

    getContentPane().add( comboBox, BorderLayout.NORTH );
    getContentPane().add( textField, BorderLayout.SOUTH );

    pack();
    setVisible( true );
  }

  /**
   * @param args
   */
  public static void main(String[] args)
  {
    new ChoiceExample();
  }

  class MyComboBoxData
  {
    String strComboDisplay = "";
    String strTextFieldDisplay = "";

    /**
     * Wird in der ComboBox angezeigt
     */
    public String toString()
    {
      return strComboDisplay;
    }
    
    public String getTextFieldDisplay()
    {
      return strTextFieldDisplay;
    }
    MyComboBoxData(String combo, String field)
    {
      strComboDisplay = combo;
      strTextFieldDisplay = field;
    }
  }
}
 
Hi,
ja genau das, was du nun dargestellt hast hab ich gesucht.
Vielen Dank für Deine Hilfe *freu*

Bye und Gruss
 
Hallo.
Kannst Du mir evtl. noch als letzten Schritt sagen wie ich nen Zeilenumbruch in dem JTextfield hinbekomme. Normalerweise ist es ja in em String mit " \n " geschehen.
Aber leider funktioniert das hierbei nicht. Der Text wird in dem JTextfield als eine lange Stringkette ausgegeben.


Siehe hierzu:

http://www.tutorials.de/tutorials202463.html
 
Zuletzt bearbeitet:
Zurück