Wie werde ich beim JTable die Selection wieder los?

Status
Nicht offen für weitere Antworten.

abrax

Mitglied
Hallo zusammen,

ich fürchte es ist eine totale Anfängerfrage, aber weder Suche hier noch google haben mir eine Lösung gebracht. (Vermutlich weil es für alle anderen kein Problem ist)

Ich habe ein JTable mit DefaultTableModel, in diesem kann man eine Zeile auswählen und der Wert wird dann in ein JTextField mittels setText übergeben, soweit so gut.

Nun gibt es aber auch ein Suchfeld, dessen Wert gegen die Datenbank geschickt wird und mit dem RückgabeVector wird die Tabelle neu befüllt. Das funktioniert auch, dank fireTableStructureChanged wird auch alles richtig angezeigt.

Nur, wenn bereits eine Zeile selectiert ist und dann die Tabelle neu geschrieben wird bekomme ich einen Fehler:

Exception occurred during event dispatching:
java.lang.IndexOutOfBoundsException: Invalid index
at javax.swing.DefaultRowSorter.convertRowIndexToModel(Unknown Source)
at javax.swing.JTable.convertRowIndexToModel(Unknown Source)
at javax.swing.JTable.getValueAt(Unknown Source)
at TestScreen$4.valueChanged(TestScreen.java:115)

Ich interpretiere dies so, dass die Selection noch da ist (ist ja auch noch markiert), aber durch den Change jetzt alle Indexe gelöscht und neu gesetzt werden, so dass plötzlich keine Angabe mehr da ist, was selectiert ist.

Gefunden habe ich zwar changeSelection, aber wie lösche ich einfach die Auswahl, so daß nichts mehr selectiert ist, dann sollte es doch gehen?


Vielen Dank für Euer Mitleid, ich weiß echt nicht weiter.
 

abrax

Mitglied
Hallo,

vielen Dank, clearSelection habe ich irgendwie übersehen.

Jetzt muss ich nur noch schauen, wo ich´s einbaue, damit mein Problem gelöst wird.

Kannst aber auch recht haben, dass das Problem woanders liegt, deshalb hier den Code

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.util.Vector;
import javax.swing.*;


public class TestScreen {

	/**
	 * @param args
	 * @throws ClassNotFoundException 
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws ClassNotFoundException {
		System.out.println("Gestartet");

	Connection con = WinkConnection.getWinkConnection();

System.out.println(con);

		Vector adrbuch = TableData.adrb(con, 1720);
		System.out.println(adrbuch);
		Vector forward = getWL_adresse(adrbuch);
		System.out.println(forward);

if (forward.get(0).toString().equalsIgnoreCase("Cancel")){
	JOptionPane.showMessageDialog(null, "Es erfolgt keine Weiterleitung", "Warnung", javax.swing.JOptionPane.INFORMATION_MESSAGE);}
	}
	
	@SuppressWarnings("unchecked")
	private static Vector getWL_adresse(Vector adrbuch){
	System.out.println("getWL_adresse gerufen");
	Vector forward = new Vector();

	/*****************
	Komponenten
	******************/
	ButtonGroup weiterleitungsArt = new javax.swing.ButtonGroup();
	ButtonGroup weiterleitungsZiel = new javax.swing.ButtonGroup();
	JLabel jLabel1 = new javax.swing.JLabel();
	JLabel jLabel2 = new javax.swing.JLabel();
	JLabel jLabel3 = new javax.swing.JLabel();
	
	final JRadioButton jRadioButton1 = new javax.swing.JRadioButton();
	final JRadioButton jRadioButton2 = new javax.swing.JRadioButton();
	final JRadioButton jRadioButton3 = new javax.swing.JRadioButton();
	final JRadioButton jRadioButton4 = new javax.swing.JRadioButton();
	JScrollPane jScrollPane2 = new javax.swing.JScrollPane();
	final   JTextField mailadresse = new javax.swing.JTextField();
	final JTextField suchfeld = new javax.swing.JTextField();
	final   JTable jTable1 = new javax.swing.JTable(){public boolean isCellEditable(int x, int y) {
		        return false;
	  		  };};
	       
	/*****************
	Komponenten setzen
	******************/
	String ArtderWeiterleitung = "default";
	weiterleitungsArt.add(jRadioButton1);
	jRadioButton1.setText("Weiterleitung");
	weiterleitungsArt.add(jRadioButton2);
	jRadioButton2.setText("Urgenz");
	weiterleitungsArt.setSelected(jRadioButton1.getModel() , true);

	String ZielderWeiterleitung = "default";
	weiterleitungsZiel.add(jRadioButton3);
	jRadioButton3.setText("Filiale");
	weiterleitungsZiel.add(jRadioButton4);
	jRadioButton4.setText("Fachabteilung");
	weiterleitungsZiel.setSelected(jRadioButton3.getModel() , true);

	jLabel2.setLabelFor(mailadresse);
	jLabel2.setText("Weiterleitung an:");

	jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
	jLabel3.setText("Adressauswahl");
	jLabel3.setLabelFor(suchfeld);
	
	suchfeld.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent e)
	  {
System.out.println("---ActionEvent---");
System.out.println(suchfeld.getText());

try {

	javax.swing.table.DefaultTableModel tabmo = (javax.swing.table.DefaultTableModel) jTable1.getModel();
 tabmo.setDataVector((TableData.adraus(WinkConnection.getWinkConnection(), 1720, suchfeld.getText())), COLUMN_IDENTIFIERS);
System.out.println("c");
tabmo.fireTableDataChanged();
} catch (ClassNotFoundException e1) {
	// TODO Auto-generated catch block
	e1.printStackTrace();
}

}});


	jLabel1.setText("Art der Weiterleitung:");
	
	jScrollPane2.setViewportView(jTable1);

	/*****************
	Tabelle
	******************/
	javax.swing.table.DefaultTableModel tableMod = new javax.swing.table.DefaultTableModel(adrbuch, COLUMN_IDENTIFIERS);
	jTable1.setModel(tableMod);
	jTable1.setColumnSelectionAllowed( false ); 
	
	jTable1.setRowSelectionAllowed( true );
	jTable1.setAutoCreateRowSorter(true);
	jTable1.getSelectionModel().addListSelectionListener(new javax.swing.event.ListSelectionListener() {
			public void valueChanged(javax.swing.event.ListSelectionEvent getValueIsAdjusting) {
			//System.out.println((jTable1.getModel()).getValueAt(jTable1.getSelectedRow(), 3));
		 	mailadresse.setText((String) (jTable1.getValueAt(jTable1.getSelectedRow(), 3)));
		 	}});

	/*****************
	Dialogfenster
	******************/
	final JPanel panel1 =new JPanel();
	//panel1.setPreferredSize (new java.awt.Dimension (400, 400));
	java.awt.Container c = panel1;
	java.awt.GridBagLayout gbl = new java.awt.GridBagLayout ();
	c.setLayout( gbl ); 
	addComponent( c, gbl, jLabel3      , 0, 0, 1, 1, 0  , 0 );
	addComponent( c, gbl, suchfeld     , 1, 0, 5, 1, 0  , 0 );
	addComponent( c, gbl, jScrollPane2 , 0, 2, 6, 1, 0  , 0 ); 
	addComponent( c, gbl, jLabel2      , 0, 3, 1, 1, 0  , 0 ); 
	addComponent( c, gbl, mailadresse  , 1, 3, 5, 1, 0  , 0 ); 
	addComponent( c, gbl, jRadioButton1, 2, 5, 2, 1, 0  , 0 ); 
	addComponent( c, gbl, jRadioButton2, 2, 6, 2, 1, 0  , 0 ); 
	addComponent( c, gbl, jLabel1      , 0, 4, 1, 2, 0  , 0 ); 
	addComponent( c, gbl, jRadioButton3, 4, 5, 2, 1, 0  , 0 ); 
	addComponent( c, gbl, jRadioButton4, 4, 6, 2, 1, 0  , 0 ); 
	

	Boolean b = false;
	do {
	JOptionPane pane = new JOptionPane (panel1, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
	final JDialog dialog = pane.createDialog (null, "Weiterleitung an Bank Austria Betreuer");
	dialog.setSize (800, 600);
	dialog.setResizable (true);
	dialog.setVisible(true);
	dialog.addWindowListener(new java.awt.event.WindowAdapter() {
						public void windowActivated(java.awt.event.WindowEvent e) {
							//dialog.requestFocusInWindow();
						}});
	Object value = pane.getValue ();
	if (value != null) {
		if (value.toString().equals("0")){if (testadresse(mailadresse.getText())){
			b=true;
			forward.add(0,"ok");}}
		if (value.toString().equals("2")){
			b=true;
			forward.add(0,"cancel");}
	};
		}while (!b);
	
	if (jRadioButton1.isSelected()){ArtderWeiterleitung = jRadioButton1.getText();};
	if (jRadioButton2.isSelected()){ArtderWeiterleitung = jRadioButton2.getText();};
	if (jRadioButton3.isSelected()){ZielderWeiterleitung = jRadioButton3.getText();};
	if (jRadioButton4.isSelected()){ZielderWeiterleitung = jRadioButton4.getText();};
	/**System.out.println(mailadresse.getText());
	System.out.println(ArtderWeiterleitung);
	System.out.println(ZielderWeiterleitung);**/
	forward.add(1, mailadresse.getText());
	forward.add(2, ArtderWeiterleitung);
	forward.add(3, ZielderWeiterleitung);
	return forward;
	}


	@SuppressWarnings("unchecked")
	final static Vector COLUMN_IDENTIFIERS = new Vector() {
	  		{	add("firma");
	  			add("vorname");
	  			add("name");
	  			add("email");	}};
	  	
	static void addComponent( java.awt.Container cont, 
	                            java.awt.GridBagLayout gbl, 
	                            java.awt.Component c, 
	 
	                            int x, int y, 
	                            int width, int height, 
	                            double weightx, double weighty ) 
	  { java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints(); 
	    gbc.fill = java.awt.GridBagConstraints.BOTH; 
	    gbc.gridx = x; gbc.gridy = y; 
	    gbc.gridwidth = width; gbc.gridheight = height; 
	    gbc.weightx = weightx; gbc.weighty = weighty; 
	    gbl.setConstraints( c, gbc ); 
	    cont.add( c ); 
	  } 
static boolean testadresse(String adresse){
	boolean c = adresse.matches("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}");
	return c;
}
public static void warnung(){}
	

public static javax.swing.table.DefaultTableModel tableMod (){

	javax.swing.table.DefaultTableModel tableMod = new javax.swing.table.DefaultTableModel();
	return tableMod;
}


}
 

Ebenius

Top Contributor
Lass Dir mal in Zeile 114 die selected row ausgeben. Die ist bestimmt -1 und deshalb die IndexOutOfBoundsException... Nur geraten.
 

abrax

Mitglied
Deine Vermutung war richtig, aber ich verstehe nicht genau warum?

Bis zur Suche funktioniert alles wie gewünscht und auch, wenn ich erst die Tabelle per Suche einschränke läufts.

Nur wenn ich erst auswähle und dann suche, komme ich auf den Index -1.

Hast Du eine Erklärung oder sogar eine Lösung dafür?
 

Ebenius

Top Contributor
Wenn Du die Daten neu setzt wird die Selektion automatisch geleert. Dann gibt es keine selektierte Zeile mehr. Damit ist der Index -1. Die Lösung ist natürlich, in Zeile 114 auf diesen Fall zu reagieren; zum Beispiel mit einer if-Abfrage.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
2 Werde Java GUIs immer noch mit dem in die Jahre gekommen Swing gemacht? AWT, Swing, JavaFX & SWT 12
S SwingWorker - ich werde wahnsinnig AWT, Swing, JavaFX & SWT 4
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Wie greife ich auf ein Element zu, welches ich beim Scenebuilder erstellt habe AWT, Swing, JavaFX & SWT 10
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
G Gui updated beim zweiten Aufruf nicht mehr AWT, Swing, JavaFX & SWT 15
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
R NullPointerException beim Start des Fensters AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Kann mir jemand beim MediaPlayer helfen ? AWT, Swing, JavaFX & SWT 2
S JavaFx Zufallsfarbe beim Button-Klick AWT, Swing, JavaFX & SWT 22
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
D JInternalFrame wechselt Position beim ersten Click AWT, Swing, JavaFX & SWT 0
steven789hjk543 Swing Verstehe etwas beim GUI nicht AWT, Swing, JavaFX & SWT 3
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
L Java FX Exception beim start AWT, Swing, JavaFX & SWT 2
L JSplitPane Divider Location beim Maximieren AWT, Swing, JavaFX & SWT 6
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
emma_louisa JavaFX Werte beim Aufrufen des Fensters übernehmen (SceneBuilder) AWT, Swing, JavaFX & SWT 3
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
N Eclipse - GUI - MacBook - Buttonsichtbarkeit beim Anlegen/Erstellen AWT, Swing, JavaFX & SWT 14
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
L Charset beim Drucken falsch AWT, Swing, JavaFX & SWT 2
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
R Swing Programm läuft nur beim Debuggen korrekt ab AWT, Swing, JavaFX & SWT 4
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
Thallius Swing "..." beim JLabel verhindern? AWT, Swing, JavaFX & SWT 3
P Scrollbalken verschwinden beim Zoomen AWT, Swing, JavaFX & SWT 4
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
J JavaFx/SceneBuilder/Felder beim verlassen prüfen AWT, Swing, JavaFX & SWT 1
D JavaFX Beim Schließen (Rotes X) Code ausführen AWT, Swing, JavaFX & SWT 1
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
S Action durchführen beim Programm beenden AWT, Swing, JavaFX & SWT 3
J JavaFX Tooltip Verzögerung beim ersten Anzeigen AWT, Swing, JavaFX & SWT 4
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing Vorgehen beim Aufruf der Klassen/Methoden AWT, Swing, JavaFX & SWT 7
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
R TriangleMesh verschwindet teilweise beim resizen des Frames, sowie beim rotieren? AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
K Swing Automatisches "Packen" beim "Neu-Painten" AWT, Swing, JavaFX & SWT 2
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben