# mit SelectionListener Doppelklick?



## RobHarm (10. Apr 2006)

Hallo,

ich wollte in einem kleinen Progrämmchen, mit einem Doppelklick auf eine JList Komponente etwas in einem Textfield ausgeben lassen... geht das mit SelectionListener? Und wenn ja, könnte mir jemand erklären, wie?

Danke
Rob


----------



## Guest (10. Apr 2006)

Ich hatte dasselbe Problem mit einem JTabel.
Wollte auch einen Doppelklick, aber der ListSelectionListener, merkte nur, wenn überhaupt was ausgewählt wurde.
Ich hab dann den ListSelectionListener durch einen ActionListener ersetzt
und den JTable so eingestellt, dass immer nur eine Zeile selektiert werden kann.

also:

```
JTable kundenTabelle=new JTable();
kundenTabelle.addActionListener(new Action Listener() {...Implementieren von actionPerformed(ActionEvent e)  }
```

Bei einer Action (Implementierung des ActionListeners) :


```
actionPerformed(ActionEvent e) {
if(evt.getButton()==MouseEvent.BUTTON1 && evt.getClickCount()>1) {
	if(kundenTabelle.getSelectedRow()!=-1){   //Prüfen, ob auch wirklich was ausgewählt wurde
                machWas();
            }
}
}
```


Hoffe das hilft dir, auch wenns bei mir ein JTable war.


----------



## Guest (10. Apr 2006)

Hallo,

da ein Doppelklick normalerweise von einer Maus ausgeführt wird wurde sich hier ein MouseListener anbieten  :wink:


----------



## RobHarm (10. Apr 2006)

Anonymous hat gesagt.:
			
		

> Hallo,
> 
> da ein Doppelklick normalerweise von einer Maus ausgeführt wird wurde sich hier ein MouseListener anbieten  :wink:



jap das hab ich mir auch gedacht, aber mich mal umgelesen... aber für Doppelclick wurden mir andere Sachen angeboten und jemand hilfreiches hat mir schon den Anfang für den SelectionListener geschrieben, daher dacht ich ich probiers mal @Gast2

@Gast1 Danke für die Hilfe



edit so sieht es bereits bei mir aus:


```
this.messageList = new JList(shortMessages);
		this.messageList.setPreferredSize(new Dimension(300,400));
		this.messageList.addListSelectionListener(new ListSelectionListener () {
			public void valueChanged(ListSelectionEvent event) {
				int firstIndex = event.getFirstIndex();
				if (0<=firstIndex)
				{
					Message message = messages[firstIndex];
					messageContent.setText(message.toString());
				}
			};
		});
```


----------



## Guest (10. Apr 2006)

Hallo,

wollte nur darauf hinweisen, dass man einer JList keinen ActionListener zuweisen kann und dass man Ereignisse ausgelöst von einer Maus (was der Doppelclick ja nun einmal ist) nur durch einen MouseListener oder MouseMotionListener abfangen kann.

z.B.:


```
messageList.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent evt) {
        if (evt.getClickCount()==2)
            System.out.println(liste.getSelectedValue());
    }
});
```


----------



## RobHarm (11. Apr 2006)

Hallo Gast,

danke dein Tipp hat mir weitergeholfen... nur muss ich nun die Emails, weil das ein Emailprogramm werden sollte, vom Server zeigen... was noch nicht so ganz klappt ;-) Ist bestimmt wieder irgendso ne kleine Variable...


edit: habs bisher so abgeändert:


```
this.messageList.addMouseListener(new MouseAdapter()
		{
		    public void mouseClicked(MouseEvent evt)
		    {
		        if (evt.getClickCount()==2)
		        {
					Message message = messages[messageList.getSelectedIndex()];
		            System.out.println(message.toString());
					messageContent.setText(message.toString());
		        }
		    }
		});
```


und das ist die Ausgabe im Feld:

com.sun.mail.imap.IMAPMessage@111b910

tjoar die Zahl hinten is ne ID würd ich sagen und die is halt nicht immer gleich


----------



## Gast (11. Apr 2006)

Hallo,

ich kenne die Klasse Message leider nicht, aber scheinbar ist toString() nicht die richtige Methode. Aufgrund der ID könnte es sich hier vielleicht um ein Feld oder Vektor handeln.
In der API Dokumentation diese Packages sollte sich aber bestimmt eine geeignete Methode finden lassen.


----------



## RobHarm (12. Apr 2006)

Hallo Gast,

die hab ich bereits mehrmals durchgelesen... und bin jedesmal noch verwirrter als zuvor :-( Hat nicht jemand noch ne andere Idee?


----------



## RobHarm (12. Apr 2006)

Hallo momentan siehts so aus:


```
public void mouseClicked(MouseEvent evt)
		    {
		        try {
					if (evt.getClickCount()==2)
					{
						Message message = messages[messageList.getSelectedIndex()];

						String ct = message.getContentType();
						System.out.println("content type = <" + ct + ">");
						String content = "no content available";
						if (-1!=ct.indexOf("TEXT/"))
						{
							content = (String)message.getDataHandler().getInputStream(content);
						}
						else if (-1!=ct.indexOf("multipart/"))
						{

						}
						messageContent.setText(content);

					    //mbp.setText(this.messages);
					}
				} catch (Exception e) {
					messageContent.setText(e.toString());
				}
		    }
```

PS: langsam bin ich echt am Ende, wenn es nicht langsam funzt


----------



## Gast (12. Apr 2006)

würde ja gerne helfen, aber kenne mich mit dem Package nicht aus.
Was liefert denn message.getContent().toString()?


----------



## RobHarm (12. Apr 2006)

Im AusgabeFeld:
	
	
	
	





```
javax.activation.DataHandler@b2c6a6
```

und bei Eclipse in der Console: 
	
	
	
	





```
content type = <multipart/mixed; 
	boundary="----_=_NextPart_001_01C5021C.41F81035">
```


----------

