JList + manuelle Selektierung unterbinden

schnuffie

Erfahrenes Mitglied
Hallo Leute,

ich verwende eine JList, deren Elemente automatisch selektiert werden, der User, der davor sitzt, soll das auch sehen (daher nicht deaktiviert) und darf scrollen, jedoch nicht selbst was anderes selektieren.

Das bedingte Selektieren möchte ich gern über ein System-Flag und einem Listener realisieren.

JList selbst hat nur den ListSelectionListener, der allerdings nur darauf reagiert, wenn nicht das "Value" selbst ändert. Einen ItemListener gibt's hier nicht.

Hat Jemand eine tolle Idee, wie ich mein Problem ohne Deaktivierung lösen kann?
 
Das deaktivieren der JList führt nicht dazu dass man nicht mehr scrollen kann, da die ScrollPane aussen rum ja weiter enabled ist.

Selektieren kannst du programmatische weiterhin mit setSelectedIndex(int) etc.

Das einfach disblen der JList sollte also für dich ausreichen.
 
Hallo Schnuffie,

nur mal so ne Idee:

Java:
import java.awt.event.*;



import javax.swing.*;



public class ListExample extends JFrame {



	private JList list = new JList();



	public ListExample() {

		super("ListBefore");

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		this.setAlwaysOnTop(true);

		this.setLocationByPlatform(true);



		String s[] = new String[99];

		for (int i = 0; i < s.length; i++) {

			s[i] = (char)(65+i) + " " + i + " " + i * i + " " + i * i * i;

		}

		list.setListData(s);



		list.getInputMap().clear();

		list.getActionMap().clear();

		

		KeyListener[] kl = list.getKeyListeners();

		

		for (int i = 0; i < kl.length; i++) {

			list.removeKeyListener(kl[i]);

		}

		

		MouseListener[] ml = list.getMouseListeners();



		for (int i = 0; i < ml.length; i++) {

			list.removeMouseListener(ml[i]);

		}



		MouseMotionListener[] mml = list.getMouseMotionListeners();



		for (int i = 0; i < ml.length; i++) {

			list.removeMouseMotionListener(mml[i]);

		}



		System.out.println(list.getRegisteredKeyStrokes().length);

		System.out.println(list.getKeyListeners().length);

		System.out.println(list.getMouseListeners().length);

		System.out.println(list.getMouseWheelListeners().length);

		System.out.println(list.getMouseMotionListeners().length);

		System.out.println(list.getListSelectionListeners().length);

		System.out.println(list.getAncestorListeners().length);

		System.out.println(list.getVetoableChangeListeners().length);

		System.out.println(list.getComponentListeners().length);



		this.add(new JScrollPane(list));



		this.pack();

		this.setVisible(true);

	}



	public static void main(String[] args) {

		new ListExample();

	}

}


Vg Erdal
 
Zurück