Manuelles Selektieren in JLists

Status
Nicht offen für weitere Antworten.

banshee

Bekanntes Mitglied
Hallo,

ich benutze in meiner Anwendung eine JList mit Multiple_Interval_Selection und mir gefällt es nicht, wie die Selektion per Default behandelt wird, wenn man Elemente löscht/hinzufügt. Z.B. wenn man 4 Elemente in der Liste hat, die letzten beiden markiert und löscht, werden die ersten beiden markiert, was ich irgendwie merwürdig finde. Oder wenn man ein markiertes Element in der Liste hat, werden alle weiteren, die man hinzufügt direkt markiert.
Ich würde die Selektion bei diesen Events gerne einfach ausschalten, aber setSelecionIndex(-1) ändern einfach gar nichts. Würde ich ihn auf 0 setzen, würde eben immer das erste Element der Liste markiert, was aber auch nicht intuitiv wäre. Wie knack ich das ganze?
 

eRaaaa

Top Contributor
wahrshceinlich fliegt dir auch noch eine arrayindexoutofboundsexception um die ohren oder? :)

probier mal folgendes:

Java:
int[] tmp = list.getSelectedIndices();
						int[] selectedIndices = list.getSelectedIndices();

						for (int i = tmp.length - 1; i >= 0; i--) {
							selectedIndices = list.getSelectedIndices();
							((DefaultListModel)list.getModel()).removeElementAt(selectedIndices[i]);
						}
 

Marco13

Top Contributor
setSelectedItem(null) müßte auch gehen, wenn ich mich nicht täusche... kann aber sein, dass dann ne NPE fliegt und man's doch per Hand machen muss
 

banshee

Bekanntes Mitglied
Ich habe da noch eine andere Idee. Logischer fand ich es sowieso, wenn man den Befehl nur auf das geklickte Element anwendet. Dazu wollte ich folgendes benutzen: int index = exFilterList.locationToIndex(popup.getLocation());
Komischerweise gibt er mir als popupLocation immer [0,0] aus, egal wo in der Liste ich hinclicke. Ich dachte also, dass er eine unsichtbare Popup-Komponente tatsächlich auf [0,0] legt und das aufklappende Menü irgendein Unterfenster ist, doch wie komme ich daran? getVisibleRecht liefert mir auch immer [0,0].

Das popup-Menü wird übrigens so angezeigt:

Java:
exFilterList.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				if(e.isPopupTrigger())
					popup.show(e.getComponent(), e.getX(), e.getY());
			}
			
			public void mouseReleased(MouseEvent e) {
				if(e.isPopupTrigger())
					popup.show(e.getComponent(), e.getX(), e.getY());
			}
		});
 

André Uhres

Top Contributor
wenn man den Befehl nur auf das geklickte Element anwendet.
Wir können das geklickte Element einfach selektieren:
Java:
...
    int index = exFilterList.getSelectedIndex();
...
exFilterList.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(final MouseEvent e) {
        if (e.isPopupTrigger()) {
            showPopup(e);
        }
    }
    @Override
    public void mouseReleased(final MouseEvent e) {
        if (e.isPopupTrigger()) {
            showPopup(e);
        }
    }
    private void showPopup(final MouseEvent e) {
        exFilterList.setSelectedIndex(list.locationToIndex(e.getPoint()));
        popup.show(e.getComponent(), e.getX(), e.getY());
    }
});
 

banshee

Bekanntes Mitglied
Hallo,

das hat alles prima funktioniert, ich brauche das gleiche nur nochmal für einen JTable, wo es ja anscheinend etwas anders zu funktionieren scheint. Da lösche ich Zeilen über "entf" und Spalten durch Rechtsclick->delete. Durch einen Rechtsclick möchte ich nun die geclickte Zeile und Spalte auswählen. Funktioniert das mit table.getSelectionModel.getSelectionInterval(int, int)? Mir scheint es, als ob die aktuelle Spalte dann noch nicht selektiert ist...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C manuelles Kompilieren Java Basics - Anfänger-Themen 2
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
C Bestimmtes Objekt einer ArrayList in einer Methode selektieren Java Basics - Anfänger-Themen 8
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
L JTable und TableCellRenderer + selektieren Java Basics - Anfänger-Themen 3
F Entität mit höchster ID per JPAQL selektieren Java Basics - Anfänger-Themen 3
P Bestimmten Stringabschnitt selektieren? Java Basics - Anfänger-Themen 2
G JTable und das selektieren Java Basics - Anfänger-Themen 7
2 Alles Selektieren in JEditorPane Java Basics - Anfänger-Themen 5
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
F Zeilen und Spalten in JTable Selektieren Java Basics - Anfänger-Themen 2
F 2D Array selektieren und überspielen? Java Basics - Anfänger-Themen 2
M Parameter zwischen zwei JLists verschieben Java Basics - Anfänger-Themen 4
G Hinzufügen und Entfernen von Zahlen, Texten etc. aus JLists Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben