JTable-einzelne Zeilen deselektieren

New_Home

Grünschnabel
hallo,

ich möchte in abhängigkeit des inhaltes der zeile, die gerade selektiert wurde, diese (manchmal) gleich wieder deselektieren. ich finde bisher aber nur clearSelection() für den gesamten tabelleninhalt, aber nichts, was sich nach setSelectionRow(i)== false oder so ähnlich anhört.

kann mir jemand einen hinweis geben, ob dies in java möglich ist.

vielen dank vorab.

gruß ute
 
Hallo!

Ich denke vom Benutzer getroffene Selektionen wieder rueckgaengig zu machen verwirrt die Benutzer nur. Ich denke es waere besser die Selektion dieser bestimmten Elemente ganz zu verbieten...

In meinem Beispiel verbiete ich dem Benutzer die Selektion von Zeilen deren ID eine gerade Zahl ist.

Schau mal hier:
Code:
  /**
   * 
   */
  package de.tutorials;
  
  import javax.swing.DefaultListSelectionModel;
  import javax.swing.JFrame;
  import javax.swing.JTable;
  
  /**
   * @author Thomas
   * 
   */
  public class JTableSelectionExample extends JFrame {
  
  	public JTableSelectionExample() {
  		super("JTableSelectionExample");
  		setDefaultCloseOperation(EXIT_ON_CLOSE);
  
  		final JTable table = new JTable(createRowData(), createHeaderData());
  		table.setSelectionModel(new DefaultListSelectionModel() {
  			public void addSelectionInterval(int index0, int index1) {
  				System.out.printf("addSelectionInterval (%s,%s)\n", index0,
  						index1);
  				String idValue = (String) table.getValueAt(index0, 0);
  				if (Integer.parseInt(idValue) % 2 == 0) {
  					System.out.println("selection not allowed...");
  					return;
  				}
  				super.addSelectionInterval(index0, index1);
  			}
  		});
  
  		add(table);
  		pack();
  		setVisible(true);
  	}
  
  	private Object[][] createRowData() {
  		return new Object[][] { { "1", "A" }, { "2", "B" }, { "3", "C" },
  				{ "4", "D" }, { "5", "E" } };
  	}
  
  	private Object[] createHeaderData() {
  		return new Object[] { "id", "value" };
  	}
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) {
  		new JTableSelectionExample();
  	}
  }

Gruss Tom
 
Zurück