Swing MouseListener reagiert nicht auf Instanz einer JTable

Status
Nicht offen für weitere Antworten.

raptorrs

Aktives Mitglied
Tach zusammen!

Ich habe mal wieder Probleme mit einem MouseListener.
Im nachfolgenden Code wollte ich so eine kleine Dropdown-Table programmieren, die aufpoppt, wenn z.B eine Postleitzahl etc. in ein Textfeld eingegeben wird. Die Daten kommen später natürlich aus einer Datenbank.
Ich bekomme es nun ums Verrecken nicht hin, dass die entsprechenden Daten nack Klick auf die Tabelle auch in die Textfelder übertragen werden, weil der Mouslistener, der an t hängt, nicht reagiert.

Hat jemand einen Vorschlag, wie ich die Daten aus Table in meine Textfelder bekommen kann? Vielleicht ist das ganze Konzept ja auch Mist. Schaue mir auch gerne alternative Konzepte an!

Hier die zwei Testklassen: (Weiss leider nicht, wie das Code-Highlighting im neuen Forum passiert!)

A) Die Main-Klasse

import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main extends javax.swing.JFrame
{
private Table t;
private JTextField[] tf;
private JPanel[] tp;

public Main()
{
t = new Table();
initComponents();
}

private void initComponents()
{
setSize(500,300);
setResizable(false);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setLayout(new GridLayout(3, 4));
t.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
System.out.println("Klappt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
t.retriveData();
for(int i = 0; i<4; i++)
{
tf.setText(t.data);
System.out.println("Im TextFeld "+i+" sollte "+t.data+" stehen");
}
t.dispose();
}
});
tf = new JTextField[4];
tp = new JPanel[3];
for(int i = 0; i<3; i++)
{
tp = new javax.swing.JPanel();
add(tp);
}
for(int i = 0; i<4; i++)
{
tf = new javax.swing.JTextField();
tf.setPreferredSize(new java.awt.Dimension(100, 30));
tp[1].add(tf);
}
tf[0].addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyTyped(java.awt.event.KeyEvent evt) {
txtKeyTyped(evt);
}
});
}
private void txtKeyTyped(KeyEvent evt)
{
showTable();
// checkForClick();
}

private void showTable()
{
System.out.println("***ShowTable***");

int px = tf[0].getLocation().x;
int py = tf[0].getLocation().y;
t.setVisible(true);

if (tf[0].hasFocus())
{
t.setLocation(px+25,py+220);
// checkForClick();
repaint();
setVisible(true);
}

}

private void checkForClick()
{ System.out.println("In Table ist das ClickFlag "+t.getClickFlag());
t.retriveData();
for(int i = 0; i<4; i++)
{
tf.setText(t.data);
System.out.println("Im TextFeld "+i+" sollte "+t.data+" stehen");
}
}

public static void main(String args[])
{
new Main().setVisible(true);
}
}


und B) die Table

import java.awt.*;
import java.awt.ScrollPane;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

class Table extends JFrame implements MouseListener
{
private JPanel topPanel;
private JTable table;
private String columnNames[];
private String dataValues[][];
private String cellValue;
public String[] data;
private int columns;
private boolean clickFlag;

public Table()
{
setTitle( "Data" );
setSize( 350, 165 );
setUndecorated(true);
setAlwaysOnTop( true );
topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
CreateColumns();
CreateData();

table = new JTable( dataValues, columnNames );
table.setShowHorizontalLines( true );
table.setRowSelectionAllowed( false );
table.setColumnSelectionAllowed( false );
table.addMouseListener(this);
table.setSelectionForeground( Color.white );
table.setSelectionBackground( Color.blue );
ScrollPane sp = new ScrollPane();
sp.add(table);
topPanel.add( sp, BorderLayout.CENTER );
setClickFlag(false);
}

public void CreateColumns()
{
columnNames = new String[4];
for( int iCtr = 0; iCtr < 4; iCtr++ )
{
columnNames[iCtr] = "Col:" + iCtr;
}
}

public int getColumnCount()
{
columns = table.getColumnCount();
return columns;
}

public void CreateData()
{
dataValues = new String[10][8];

for( int iY = 0; iY < 10; iY++ )
{
for( int iX = 0; iX < 8; iX++ )
{
dataValues[iY][iX] = "" + iX + "," + iY;
}
}
}
// Retrieve all data of a selected row
public String retriveData()
{ data = new String[getColumnCount()];
if(!getClickFlag())
{
for (int i = 0; i < getColumnCount(); i++)
{
data = "";
}
}
else if (getClickFlag())
{
for (int i = 0; i < getColumnCount(); i++)
{
data = String.valueOf(table.getValueAt(table.getSelectedRow(), i));
System.out.println("Spalte " + i + " hat den Wert " + data);
}
}
return cellValue;
}

public static void main( String args[] )
{
Table t = new Table();
t.setVisible( true );
}

public void mouseClicked(MouseEvent e)
{ System.out.println("TableClicked");
setClickFlag(true);
retriveData();
dispose();
}

public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}

public boolean getClickFlag()
{
return clickFlag;
}

public void setClickFlag(boolean clickFlag)
{
this.clickFlag = clickFlag;
}

}

Ich sitze wirklich schon fast eine Woche an diesem Problem und danke schon mal im Voraus

Schönen Gruss aus Quickborn

raptorrs
 
G

Gast2

Gast
was willst du machen wenn eine Zeile angeklickt wird, willst du textfelder füllen???
dann nehm ein SelectionListener...
 

raptorrs

Aktives Mitglied
@SirWayne

Genau, die Daten aus der Table-Zeile sollen nach Klick in die Textfelder übertragen werden.

Das Selektieren und Herausschreiben aus der Table klappt gut, jedoch findet es nur in der Klasse Table statt.

Ich weiss einfach nicht, wie ich die Daten nach erfolgtem Click von Table in Main herüberkriege, da der Mouselistener, der an der Instanz von Table in Main hängt, nicht reagiert.

Scheint ziemlich schwierig zu sein!
 
G

Gast2

Gast
Für sowas nimmt an ein SelectionListener kein MouseListener da du die Selektion auch mit den Pfeiltasten in einer Tabelle ändern kannst
 

raptorrs

Aktives Mitglied
OK, ich sehe das ein.

Dennoch würde mich interessieren, warum dieser Listener in Main nicht funktioniert und wie man es hinkriegen könnte, das t in Main überhaupt auf Mouseclicks reagiert.
 

André Uhres

Top Contributor
OK, ich sehe das ein.

Dennoch würde mich interessieren, warum dieser Listener in Main nicht funktioniert und wie man es hinkriegen könnte, das t in Main überhaupt auf Mouseclicks reagiert.
In der Main hängst den den Listener an den JFrame und der ist ja hinter der JTable versteckt, kann also nicht auf die Klicks reagieren. Wir könnten in "Table" eine neue Methode einführen, der wir den Listener aus der Main übergeben können. Diesen Listener hängen wir dann an die JTable.
 

raptorrs

Aktives Mitglied
Andreeeeeeeeeeeeeee !:)))

Was für eine Idee! Klappt perfekt im ersten Schuss! :)

Ich wüde gerne den geänderten Code posten, aber kann mir vielleicht jemand sagen, wie das Code-Highlighting jetzt funktioniert?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JComboBox reagiert nicht auf MouseListener AWT, Swing, JavaFX & SWT 5
H MouseListener Schach AWT, Swing, JavaFX & SWT 6
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
U MouselIstener zu JFrame AWT, Swing, JavaFX & SWT 6
F Swing MouseListener im JPanel AWT, Swing, JavaFX & SWT 3
J Swing Button mit JTable und MouseListener AWT, Swing, JavaFX & SWT 8
F JPanel + MouseListener AWT, Swing, JavaFX & SWT 5
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
A SWT SWT Scale und MouseListener AWT, Swing, JavaFX & SWT 7
J MouseListener und rechte Maustaste AWT, Swing, JavaFX & SWT 3
R MouseListener auf JPanel AWT, Swing, JavaFX & SWT 3
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
J Swing Einbau MouseListener in JPanel AWT, Swing, JavaFX & SWT 3
N Mit MouseListener X-Y Angaben vom Bild erfahren AWT, Swing, JavaFX & SWT 3
T MouseListener an Ecken von Polygonen hinzufügen AWT, Swing, JavaFX & SWT 5
H Swing JPanel in JTable mit MouseListener AWT, Swing, JavaFX & SWT 3
A Individueller MouseListener ? AWT, Swing, JavaFX & SWT 7
B MouseListener im Renderer einer JComboBox AWT, Swing, JavaFX & SWT 3
P AWT MouseListener unklare abhandlung von Events AWT, Swing, JavaFX & SWT 3
M MouseListener/MouseMotionListener AWT, Swing, JavaFX & SWT 2
njans SWT MouseListener exited AWT, Swing, JavaFX & SWT 4
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
U Swing Generierung mehrerer Kreise per MouseListener AWT, Swing, JavaFX & SWT 16
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
C JTappedPane Mouselistener auf Überschrift Registerkarte AWT, Swing, JavaFX & SWT 2
M MouseListener AWT, Swing, JavaFX & SWT 3
K AWT MouseListener linke und rechte Maustaste AWT, Swing, JavaFX & SWT 5
C Swing MouseListener Doppelklick-Geschwindigkeit AWT, Swing, JavaFX & SWT 4
N Swing MouseListener in JTable AWT, Swing, JavaFX & SWT 4
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
R MouseListener wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
P JComboBox und MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
multiholle Swing Mouselistener auf Parentpanel immer aktiv AWT, Swing, JavaFX & SWT 7
C MouseListener und ActionListener kombinieren AWT, Swing, JavaFX & SWT 17
M Komponenten einer unbestimmten Anzahl und MouseListener AWT, Swing, JavaFX & SWT 4
A MouseListener funktionert nie AWT, Swing, JavaFX & SWT 12
C Probleme mit Größe und mit MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener für jede Zelle einer JTable AWT, Swing, JavaFX & SWT 4
E MouseListener Problem AWT, Swing, JavaFX & SWT 4
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
S MouseListener zurückverfolgung auf element. AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
hdi Wie mach ich diesen MouseListener AWT, Swing, JavaFX & SWT 4
G MouseListener & KeyListener AWT, Swing, JavaFX & SWT 4
2 Mouselistener AWT, Swing, JavaFX & SWT 2
W MouseListener, getClickCount und Doppelklick AWT, Swing, JavaFX & SWT 6
S swing komponenten mit mouselistener rotieren AWT, Swing, JavaFX & SWT 15
G JFrame,JLabel,MouseListener AWT, Swing, JavaFX & SWT 6
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
V Frage zu MouseListener --> mousePressed() AWT, Swing, JavaFX & SWT 5
C MouseListener für Spalte eines JTables AWT, Swing, JavaFX & SWT 4
K Problem mit 2 MouseListener. AWT, Swing, JavaFX & SWT 3
M MouseMotionListener oder mouseListener AWT, Swing, JavaFX & SWT 6
T JComboBox und MouseListener AWT, Swing, JavaFX & SWT 11
F MouseListener - Unhandled IOException AWT, Swing, JavaFX & SWT 5
padde479 Statusleiste mit MouseListener aktualisieren AWT, Swing, JavaFX & SWT 3
L Problem mit MouseListener, AdjustmentListener AWT, Swing, JavaFX & SWT 6
T MouseListener Problem AWT, Swing, JavaFX & SWT 3
F Mouselistener wird wiederholt aufgerufen AWT, Swing, JavaFX & SWT 3
G Frage zu MouseListener und speichern des Wertes (reflektion? AWT, Swing, JavaFX & SWT 6
B frage zu MouseListener AWT, Swing, JavaFX & SWT 5
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
W JPanel, JLabel und MouseListener -> auf clicks reagieren AWT, Swing, JavaFX & SWT 5
S MouseListener auf einem einzelnen Tab setzen AWT, Swing, JavaFX & SWT 3
B MouseListener & Fenster schliessen AWT, Swing, JavaFX & SWT 3
G MouseListener AWT, Swing, JavaFX & SWT 4
G Tooltip sperrt MouseListener? AWT, Swing, JavaFX & SWT 6
S JComboBox und MouseListener AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
A Klassenübergreifend MouseListener verwenden AWT, Swing, JavaFX & SWT 14
N "globaler" MouseListener (+MouseMotionListener) AWT, Swing, JavaFX & SWT 4
M ToolTipText für JTable mit MouseListener ohne anklicken? AWT, Swing, JavaFX & SWT 7
A MouseListener auf Bild legen ? AWT, Swing, JavaFX & SWT 16
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J MouseListener AWT, Swing, JavaFX & SWT 3
A JPanels in JPanel und MouseListener AWT, Swing, JavaFX & SWT 3
C Mehrere MouseListener? AWT, Swing, JavaFX & SWT 7
U Keylistener und Mouselistener AWT, Swing, JavaFX & SWT 2
L Event-handling, MouseListener AWT, Swing, JavaFX & SWT 5
T Problem mit MouseListener bei JButton AWT, Swing, JavaFX & SWT 5
K mein keyListener scheint Konflict haben mit mouseListener AWT, Swing, JavaFX & SWT 6
G Problem mit MouseListener AWT, Swing, JavaFX & SWT 9
VPChief Nach abspielen von Sound reagiert das Program nichtmehr AWT, Swing, JavaFX & SWT 9
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
M JavaFX String aus TextField reagiert nicht wie erwartet AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben