itemlistener

Status
Nicht offen für weitere Antworten.
E

einfallslos

Gast
huhu!
vielleicht kann mir hier jemand helfen :D

ich hab eine jcombox, die leider nicht auf meinen itemlistener reagiert.
die jcombobox heißt nr
ich versuche mal den relevanten code zu posten
Code:
} else if (e.getActionCommand().equals(nr)){
					System.out.println("nummer gewählt");
					onnr();
				}

Code:
nr.addItemListener(new ItemListener() {
		 public void itemStateChanged( final ItemEvent e ) {
				System.out.println("Handy ausgewählt");	
				nr = (JComboBox)e.getSource();
	
				if(e.getStateChange() == ItemEvent.SELECTED) { 
					nr.getSelectedItem();
					System.out.println("Handy ausgewählt");           
					}						}
		           
				if (nr.getSelectedItem().equals("Privattelefon")){
		    			
		    			System.out.println("Privattelefon ausgewählt");
						
				}	
			}
	
	 });
		
		
	}
wäre echt lieb, wenn jemand ne idee hätte, wahrscheinlich ist es irgendein blöder fehler meinerseits :?
 
S

SlaterB

Gast
die Aussage 'eine JCombobox reagiert nicht auf einen ItemListener' ist offensichtlich nicht konkurrenzfähig,
es muss also an deinen restlichen Code liegen zu dem man nichts hellsehen kann,
ganz wagemutiger Tipp: in der GUI ist eine anderes JComboBox-Objekt in Benutzung als das, welchem du den Listener zuordnest
 

sliwalker

Top Contributor
Moin,

kann das denn stimmen?
Code:
(e.getActionCommand().equals(nr))

Da nr wohl ein Objekt vom Typ JComboBox ist, ActionCommand aber String, vermute ich das da der Fehler liegt.

Ich weiß nicht was Du da bezwecken willst, sieht aber nicht gut aus.

greetz
SLi
 
E

einfallslos

Gast
ok, werde versuchen den code deutlicher darzustellen als gesamtbild...

Code:
package de.muster.cti;

import java.awt.*;
import java.text.*;
import java.util.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.JTextComponent;


import java.io.FilterWriter;

public class AnswerCallDialog<ergebnis> extends JDialog implements MouseListener {
   
	//JComboBox words = new JComboBox();

	private static final String NACHVERFOLGUNG = "NACHVERFOLGUNG";
	private static final String NEU = "NEU";
	private static final String ERLEDIGEN = "ERLEDIGEN";
	protected JComboBox kunde = new JComboBox();
	protected JTextField nummer = new JTextField();
	protected JTextField anrufer = new JTextField();
	protected JTextField grund = new JTextField();
	protected JTextArea notizen = new JTextArea(10, 50);
	protected JTextField vorname = new JTextField();
	protected JList ergebnis = new JList(); 
	
	JDialog frame = new JDialog();
	JTable table = new JTable();
	Kunde k1;
	String[] fh = {"Privattelefon","Handy","Geschäfts Tel","Geschäfts Tel 2"};
	JComboBox nr = new JComboBox(fh);
	
	
	
	
	public AnswerCallDialog() {
		super(Misc.getRootFrame(), true);
		initial();
	}public AnswerCallDialog(JDialog owner) {
		super(owner);
		initial();
	}
	public AnswerCallDialog(JFrame owner) {
		super(owner);
		initial();
	}

			ActionListener myListener = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals(ERLEDIGEN)) {
					System.out.println("Abbruch");
					onErledigen();
				} else if (e.getActionCommand().equals(NEU)) {
					onAbschicken();
				} else if (e.getActionCommand().equals(NACHVERFOLGUNG)) {
					onNachverfolgung();
				} else if (e.getActionCommand().equals("Wählen")) {
					onWaehlen();
				} else if (e.getActionCommand().equals("Auflegen")){
					onAuflegen();
				} else if (e.getActionCommand().equals("Nachverfolgung")){
					onNachverfolgung();
				} else if (e.getActionCommand().equals("suchen")){
					onsuchen();
				} else if (e.getActionCommand().equals(nr)){
					System.out.println("nummer gewählt");
					onnr();
				}
					}

				};

		
			}
		}
		
		suchen.addActionListener(myListener);
		abschicken.addActionListener(myListener);
		erledigen.addActionListener(myListener);
		nachverfolgung.addActionListener(myListener);
		waehlen.addActionListener(myListener);
		auflegen.addActionListener(myListener);
		//words.addActionListener(myListener);
		nr.addActionListener(myListener);
		
	}
	
	
			
protected void onnr() {
	
nr.setEditable(true);
	
	 //ItemListener itemListener = new ItemListener() {
	    
	nr.addItemListener(new ItemListener() {
		 public void itemStateChanged( final ItemEvent ie ) {
				System.out.println("Handy ausgewählt");
				
					System.out.println("Handy ausgewählt");
						
						}
		           
				
			}
	
	 });
		
		
	}			
			
		public static void main(String[] args) {

		JDialog f = new AnswerCallDialog(new JFrame());
	
		f.setVisible(true);
		

		}
	
	public void mouseClicked( java.awt.event.MouseEvent e ) {
		if (e.getClickCount() == 2) {
			 int index = ergebnis.locationToIndex(e.getPoint()); 
		    
		    ListModel lm = ergebnis.getModel();
		          int[] sel = ergebnis.getSelectedIndices();
		            	  k1 = (Kunde)ergebnis.getSelectedValue();
		            
			anrufer.setText((k1.getName()));
			vorname.setText((k1.getVorname()));
			nummer.setText((k1.getPrivatTel()));
			frame.setVisible(false);
			frame.dispose();
		  	}
		}
das ist natürlich nicht der komplette code, der wäre viel zu lang, aber ich hoffe es reicht für einen überblick
 
S

SlaterB

Gast
schau an, und nun sage mal, warum du
System.out.println("Handy ausgewählt");
in den ItemListener geschrieben hast?
doch wohl um zu testen, ob er aufgerufen wird?

dann musst du auch die nächsten Schritte machen,
ganz wichtig ist z.B. der Test, ob der Listener überhaupt geadded wird:



System.out.println("huhu, gleich kommt das add");
nr.addItemListener(new ItemListener() {
public void itemStateChanged( final ItemEvent ie ) {
System.out.println("Handy ausgewählt");
}
}
});


war nicht schwer, oder? so siehst du glasklar, dass dieser Code nie ausgeführt wird,
die sich daraus ergebenen Probleme dürften klar sein ;)

es liegt, wie schon vermutet wurde, an
e.getActionCommand().equals(nr)){
ein String wird nie equal einer JComboBox sein
 
G

Guest

Gast
ok, habe versucht es zu ändern, bin aber anscheinend zu blond dafür...
kann mir denn vielleicht jemand helfen, wie ich die funktion dann richtig aufrufe?
 
S

SlaterB

Gast
sicher, sobald du erzählst, was das ganze überhaupt bedeuten soll,

einen ActionListener auf eine JComboBox zu legen, der diese dann erst mit Elementen füllt, sieht man nicht so oft,

vielleicht möchtest du
} else if (e.getSource() ==nr){
 
G

Guest

Gast
nein die combox ist vorher schon mit werten gefüllt, bei wechsel des items soll in einem textfeld daneben die telefonnummer gewechselt werden, z.b. von privattelefon auf handy. die daten bekomme ich aus einer datenbank.
das problem mit dem actioncommand habe ich mittlerweile gelöst, jetzt habe ich noch ein problem damit die werte zu vergleichen...
 

Verjigorm

Top Contributor
nr.getSelectedItem().toString().equals("Privattelefon") ...
ansonsten vergleichst du ja schon wieder object mit string ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben