Mouselistener auf jTable

epitox

Mitglied
Guten Tag,

habe folgendes Problem:

Ich lese mit Java Daten aus einer Access-Datenbank aus und stelle diese in einer Tabelle dar.
Der Benutzer soll jetzt auf die Tabelle klicken können und der Zelleninhalt soll in ein Textfeld geschrieben werden.

Den Code dafür habe ich auch, aber ich schaff es nicht, den Listener so zu konfugieren, dass er beim Klick auf die Tabelle auslöst.

Ist alles in Netbeans erstellt (jTable-Komponente mit jScrollPane).
Nach jeder Abfrage wird die Tabelle "report" erzeugt, auf die auch der ViewPort der Scroll-Pane-Komponente gesetzt wird.

Hier noch mein Code:

Java:
public void mouseClicked(java.awt.event.MouseEvent e) {
     int iSelectedRow = report.getSelectedRow(); // Schreibt die angeklickte Zeile in die Variable iSelected
    int iColumnOfYourWish = report.getSelectedColumn(); // Schreibt die angeklickte Spalte in die Variable Coulmn...
    Object yourValue = report.getModel().getValueAt(iSelectedRow, iColumnOfYourWish); // Speichert den Wert an der angegebenen Position in die Variable yourValue
    String neu = yourValue.toString(); //Konvertiert Object in String um es in Textfeld darstellbar zu machen.
    jTextField1.setText(neu); // Schreibt Variableninhalt in Textfeld.
    System.out.println(iSelectedRow); // Zur Überprüfung, ob der jeweilige Select funktioniert
    System.out.println(iColumnOfYourWish);
    System.out.println("Maus-Event ausgelöst!");

Wie schaffe ich es jetzt, dass die Tabelle auf meinen Maus-Klick reagiert? :)

Vielen Dank für eure Hilfe!
 

age

Mitglied
JTable in den Anfänger-Themen zu lesen ist schon mal hart :D

Du hast den MouseListener nicht aus Versehen der ScrollPane hinzugefügt?
 

epitox

Mitglied
JTable in den Anfänger-Themen zu lesen ist schon mal hart :D

Du hast den MouseListener nicht aus Versehen der ScrollPane hinzugefügt?

Auf dem ScrollPane funktioniert es :D

Nur muss ich da halt 1x in die Tabelle klicken und ein weiteres mal auf das ScrollPane, wenn ich den Listener auf jTable1 setze passiert nichts.

Könnte das daran liegen, dass ich immer die Tabelle "report" erzeuge und nicht die Tabelle "jTable1"?^^

EDIT: Hab das "report" mal zu "jTable1" geändert, macht aber keinen Unterschied :(
 
Zuletzt bearbeitet:

age

Mitglied
Du klickst in die Tabelle "jTable1", innerhalb des Listeners wird aber die ganze Zeit "report" angesprochen?

Ich verstehe ehrlich gesagt nicht, wozu überhaupt beide Tabellen existieren?
 

epitox

Mitglied
Du klickst in die Tabelle "jTable1", innerhalb des Listeners wird aber die ganze Zeit "report" angesprochen?

Ich verstehe ehrlich gesagt nicht, wozu überhaupt beide Tabellen existieren?

Wenn ich die jTable1 aus der GUI lösche, verabschiedet sich mein ScrollPane gleich mit und umbenennen wird momentan durch "two components in the same form cannot have the same name" verhindert...

Es heißt aber sonst nichts "report" ???:L

EDIT: Hatte noch JTable report unter der Klassendefinition stehen :oops:

EDIT: Der Listener liegt jetzt auf der Tabelle "report", löst aber um´s Verrecken nicht aus, wenn ich auf eine Zelle der Tabelle klicke ;(
 
Zuletzt bearbeitet:

age

Mitglied
Okay, dann wäre Schritt 1 zuerst mal, dass du nicht die alte Tabelle wegwirfst und eine neue einfügst, sondern einfach die Daten aktualisierst.

Aber das tut hier bei deinem Problem ja erstmal nichts zur Sache. Mit dem, was ich aktuell weis, kann ich dir leider nicht sagen, warum dein MouseListener nicht funktioniert.

Würdest du mir vielleicht schnell ein kurzes KSKB erstellen?
 

age

Mitglied
Nur noch mal als Referenz für dich:

JTable:

Java:
package age;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


public class Test extends JFrame {

	private JPanel contentPane;
	private JScrollPane scrollPane;
	private JTable table;
	private JPanel panel;
	private JTextField textField;


	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {

			public void run() {
				try {
					Test frame = new Test();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}


	/**
	 * Create the frame.
	 */
	public Test() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 564, 460);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		contentPane.add(getScrollPane(), BorderLayout.CENTER);
		contentPane.add(getPanel(), BorderLayout.SOUTH);
	}

	public JScrollPane getScrollPane() {
		if (scrollPane == null) {
			scrollPane = new JScrollPane();
			scrollPane.setViewportView(getTable());
		}
		return scrollPane;
	}
	public JTable getTable() {
		if (table == null) {
			table = new JTable();
			table.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent e) {
					
					Test.this.getTextField().setText(String.valueOf(Test.this.getTable().getValueAt(Test.this.getTable().getSelectedRow(), Test.this.getTable().getSelectedColumn())));
					
				}
			});
			table.setModel(new DefaultTableModel(
				new Object[][] {
					{"Text 1", "Text 2"},
					{"Text 3", "Text 4"},
					{"Text 5", "Text 6"},
				},
				new String[] {
					"Header 1", "Header 2"
				}
			));
		}
		return table;
	}
	public JPanel getPanel() {
		if (panel == null) {
			panel = new JPanel();
			panel.add(getTextField());
		}
		return panel;
	}
	public JTextField getTextField() {
		if (textField == null) {
			textField = new JTextField();
			textField.setColumns(10);
		}
		return textField;
	}
}
 

ssoul26

Bekanntes Mitglied
Sind deine Zellen editierbar? Solltest du auf eine editierbare Zelle klicken so wird das Event an den Listener der jeweiligen Zelle weitergeleitet! Übeprüf das mal.
 

mla.rue

Bekanntes Mitglied
du sagst du benutzt Netbeans... hast dafür dann aber eine sehr komische Event Methode... NetBeans macht alles nach dem Motto "Komponente.Event(...)" und private ist das auch noch.

Wenn du das also schon von "Hand" machen möchtest, dann solltest auch schauen, ob ein entsprechender Event bei der Tabelle registriert ist.

Das jedenfalls meine Vermutung nach den paar Zeilen code die du präsentiert hast.
 

epitox

Mitglied
Sind deine Zellen editierbar? Solltest du auf eine editierbare Zelle klicken so wird das Event an den Listener der jeweiligen Zelle weitergeleitet! Übeprüf das mal.

Die Zellen sind editierbar.

Habe den gleichen Code jetzt mal in den Click-Listener des ScrollPanes geschrieben und wenn ich eine Zelle auswähle und anschließend rechts oben auf das freie Eck klicke (gelb umrandet) wird die Methode ausgelöst.

u9f7kw4gbb1e.png


Jetzt hätte ich das gerne noch durch einen Klick :D
 
Zuletzt bearbeitet:

epitox

Mitglied
Kleines Update: Gerade festgestellt, dass der Listener auch anspringt, wenn die Tabelle kleiner als der dafür vorgesehende Platz ist.

Allerdings braucht man dann auch immer noch 2 Klicks.
 

epitox

Mitglied
Problem ist gelöst!

Nach dem Erzeugen der Tabelle mithilfe von
Java:
jTable1 = new JTable(data, columnNames);
muss der Listener erneut registriert werden, warum auch immer...
Java:
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });
 

c_sidi90

Top Contributor
Einfacher wäre es eventuell einfach mit einem SelectionListener auf der Tabelle gewesen, aber wenns jetzt funktioniert ist ja gut :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Mouselistener bei JTable Java Basics - Anfänger-Themen 4
D Problem mit Mouselistener und jtable Java Basics - Anfänger-Themen 7
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
V Problem - MouseListener/2DGraphics Java Basics - Anfänger-Themen 2
R Variablen MouseListener funktioniert auf anderen Pcs nur bedingt Java Basics - Anfänger-Themen 6
G MouseListener funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
R Variable Klassenübegreifend MouseListener Java Basics - Anfänger-Themen 0
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
S GUI ImageIcon Mouselistener Link Java Basics - Anfänger-Themen 0
P MouseListener funktioniert nicht Java Basics - Anfänger-Themen 6
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Problem mit MouseListener Java Basics - Anfänger-Themen 4
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
M MouseListener funktioniert nicht Java Basics - Anfänger-Themen 9
B Variablen an MouseListener übergeben Java Basics - Anfänger-Themen 5
H MouseListener für ein eingefügtes Bild in einem JFrame Java Basics - Anfänger-Themen 7
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
J MouseListener fuer gezeichnete Polyline Java Basics - Anfänger-Themen 3
L Label + MouseListener Java Basics - Anfänger-Themen 12
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
M MouseListener Java Basics - Anfänger-Themen 2
kitz MouseListener Java Basics - Anfänger-Themen 8
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
C fragen zu MouseListener Java Basics - Anfänger-Themen 3
M MouseListener funktioniert in jar-file nicht mehr Java Basics - Anfänger-Themen 13
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
S Probleme mit 2 mouselistener Java Basics - Anfänger-Themen 6
A Frage zu MouseListener Java Basics - Anfänger-Themen 2
D Mouselistener Java Basics - Anfänger-Themen 2
A jPanel an MouseListener übergeben? Java Basics - Anfänger-Themen 2
S Swing JEditoPane MouseListener Java Basics - Anfänger-Themen 5
M Mouselistener Java Basics - Anfänger-Themen 4
S MouseListener funzt net. Java Basics - Anfänger-Themen 5
G MouseListener double click? Java Basics - Anfänger-Themen 1
V MouseListener Java Basics - Anfänger-Themen 5
M MouseListener Java Basics - Anfänger-Themen 3
N Mouselistener? Java Basics - Anfänger-Themen 5
T ein MouseListener pro Objekt sinnvoll? Java Basics - Anfänger-Themen 4
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
U MouseListener Java Basics - Anfänger-Themen 2
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
L MouseListener Problem. Java Basics - Anfänger-Themen 2
S mouselistener Java Basics - Anfänger-Themen 3
N MouseListener Java Basics - Anfänger-Themen 2
J MouseListener implementieren Java Basics - Anfänger-Themen 12
P MouseListener wird anscheinend nicht benutzt Java Basics - Anfänger-Themen 12
N MouseListener - reagiert zu spät Java Basics - Anfänger-Themen 3
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
M prüfen ob mouselistener gesetzt ist. Java Basics - Anfänger-Themen 10
O image und mouseListener Java Basics - Anfänger-Themen 15
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
P Kann keinen MouseListener hinzufügen Java Basics - Anfänger-Themen 3
G MouseListener einbauen - wie? Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren jtable arraylist Java Basics - Anfänger-Themen 12
thobren JTable Icon Java Basics - Anfänger-Themen 1
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben