Frage zu Listener für JTable

Status
Nicht offen für weitere Antworten.

the_brain

Mitglied
also ich hab folgendes Problem. ich hab in meinem programmierten Dateiexplorer die Dateien meiner Festplatte in ein JTable eingelsen. Dies funktioniert bis jetzt tadellos, jedoch möchte ich jetzt euch noch Aktionen implementieren und zwar, dass wenn ich jetzt auf eine Datei klick, z.b. readme.txt soll irgendetwas gemacht werden. zu testzwecken genügt mal dass er z.b. ein System.out.println("ich wurde geklickt"); macht. Jedoch wie implementiere ich das ganze mit einem Doppelklick.

Bei mir funktionierts schon wenn ich einfach auf die Datei bzw. jeweilige Zeile klicke, jedoch ich weiß nicht wie ich dies mit einem Doppelklick implementieren soll.

so siehts bei mir bis jetzt aus:

ListSelectionModel selectionModel = myFiles.getSelectionModel();
selectionModel.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent event) {
int zeile = myFiles.getSelectedRow();
if (zeile > -1)
System.out.println("Zeile ausgewählt");

}
});

kann mir jemand weiterhelfen wie ich das mit dem Doppelklick machen soll?
 
B

bygones

Gast
mich wundert zwar die Jtable für einen Dateienexplorer - aber naja....

mit dem doppelklick kannst du nur über einen MouseListener realiseren:

Code:
component.addMouseListener(new MyMouseListener());
    
    public class MyMouseListener extends MouseAdapter {
        public void mouseClicked(MouseEvent evt) {
            if (evt.getClickCount() == 2) {
                // double-click
            } else if (evt.getClickCount() == 1) {
                // single-click
            }
        }
    }
 

the_brain

Mitglied
noch kurz zur erklärung, mein datei explorer besteht aus einer splitpane. auf der linken seite befindet sich ein jtree mit den ordner und auf der rechten seite der jtable.
 

the_brain

Mitglied
danke mal für dein posting, habs schon ausprobiert, jedoch funktioniert das mit dem doppelklick nur wenn ich den table nicht editierbar mache nämlich so: myFiles.setEnabled(false);

jedoch hab ich jetzt das problem, dass die zeile wo ich hinklicke nun nicht mehr markiert wird. hast eine ahnung wie ich das problem lösen könnte?

eine weiter frage habe ich auch noch und zwar: wie kann ich jetzt genau festlegen, dass er nur wenn ich jetzt auf die 3. zeile doppelt hinklicke er mir ein System.out.println macht bzw. abfragen wenn der inhalt der 1.zelle der 3. zeile mit .txt endet soll er ein System.out.println machen.

wie muss ich dies implementieren?
 
B

bygones

Gast
the_brain hat gesagt.:
jedoch hab ich jetzt das problem, dass die zeile wo ich hinklicke nun nicht mehr markiert wird. hast eine ahnung wie ich das problem lösen könnte?
mach nicht die ganze Tabelle per setEditable(false) auf nicht editierbar - mach den Inhalt der Tabelle nicht editierbar....

Code:
setModel(new DefaultTableModel() {
    public boolean isCellEditable(int row, int col) {
            return false;
    }
});

the_brain hat gesagt.:
eine weiter frage habe ich auch noch und zwar: wie kann ich jetzt genau festlegen, dass er nur wenn ich jetzt auf die 3. zeile doppelt hinklicke er mir ein System.out.println macht bzw. abfragen wenn der inhalt der 1.zelle der 3. zeile mit .txt endet soll er ein System.out.println machen.

wie muss ich dies implementieren?
du kannst einfach über deine Tabelle abfragen getSelectedColumn() bzw. getSelectedRow(). Da kannst du dann testen, welche Zeile bzw. welche Spalte angeklickt wurde. Über getValue(int row, int col) erhältst du dan den wert der Zelle....

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTable.html
 
G

Guest

Gast
hab noch ne frage zu folgendem quellcode:

setModel(new DefaultTableModel() {
public boolean isCellEditable(int row, int col) {
return false;
}
});

hab dies jetzt in mein programm eingebunden, jedoch funktioniert es bei mir noch nicht.
ich erzeug hier ja ein neues TableModel und mit setModel setzt ich dieses od?
muss ich dieses dann auch noch an mein jTable übergeben? od was muss ich sonst noch machen?
 
B

bygones

Gast
verwendest du eine eigenes TabellenModell ??? wenn ja dann muss du die Methode nur in die Klasse mitübernehmen.

Ansonsten erzeugst du damit ein neues TabellenModell, dass kein Editieren der Tabelle zulässt. Mit setModel setzt du dann das Model der tabelle....
also der tabelle setzen:
Code:
Jtable table = new JTable();
table.setModel(.....)
 

the_brain

Mitglied
also ich verwende für mein jtable kein table model, hab den table mit einem 2 dimensionalen array befüllt. die dateien werden aus der festplatte in ein array ausgelesen und dieses array schreib ich dann in einen 2 dimensionalen array. zusätzlich wird noch ein string array mit der spaltenbeschriftung (datei, größe, letzte änderung...) in den 2 dimensinoalen array geschrieben.

doch wenn ich folgendes mache:

Jtable table = new JTable();
table.setModel(.....)

sind die daten aus dem JTable plötzlich weg und es ist leer! hast eine ahnung warum?

das JTable wird so erzeugt und anschließend setzte ich das Model

myFiles = new JTable(DATEN, SPALTEN);

myFiles.setModel(new DefaultTableModel() {
public boolean isCellEditable(int row, int col) {
return false;
}
});

wo liegt das problem?
 
B

bygones

Gast
das TableModel ist für die Speicherung der Daten zuständig - die Daten werden überschrieben, wenn ein neues TableModel gesetzt wird.

Code:
JTable t = new JTable();
Vector v= new Vector();
Vector v1 = new Vector();
DefaultTableModel m = new DefaultTableModel(v,v1) {
    public boolean isCellEditable(int row, int col) {
            return false;
    } 
};
hab hier mal zwei vectoren genommen, du kannst aber auch deine Sache mit den Arrays angeben....
 

the_brain

Mitglied
zuerst mal danke für deine hilfe!

soweit funktioniert jetzt mal alles. mit den methoden getSelectedRow und getSelectedColumn hab ich schon ausprobiert und dies funtioniert auch super.

Jetzt möchte ich aber das ganze mit getValueAt(int row, int col) implementieren, jedoch funktioniert dies leider noch nicht.
scheinbar hat er bei mir ein Problem mit den Parametern. Wie muss ich denn die Methode verwenden bzw. die Parameter?

int zeile = myFiles.getValueAt(int row, int col);
wollte den wert aus der selektierten zeile und spalte damit auslesen und einer variablen zuweisen, nur er unterwellt mir jedesmal die Parameter int!

wie verwend ich diese methode am besten um den inhalt einer zelle auszulesen?
 
B

Beni

Gast
Du musst "int row" natürlich durch eine Variable oder einen Wert ersetzen!

Code:
int row = 123;
int zeile = myFiles.getValueAt( row, 456 );
 
B

bygones

Gast
Äh Beni -
was sagt den die Api vom rückgabe wert von getValue() :roll:

getValue liefert ein Objekt zurück und kein int....
 

the_brain

Mitglied
autsch war ein dummer fehler mit dem int!

aber das ist eigentlich gar nicht mein hauptproblem

ich möchte eigentlich nicht fix eine reihe, spalte angeben
int row = 123;
int zeile = myFiles.getValueAt( row, 456 );

sondern es soll immer der wert aus der position ausgelesen werden wo ich hinklicke.
zb. wenn ich auf eine spalte klicke soll der inhalt ausgelesen werden und dann der inhalt z.b. mit der endung .txt verglichen werden und wenn dies zutrifft soll irgendwas bestimmtes gemacht werden (z.b. jetzt zu Testzwecken einfach ein System.out.println...)
 
B

bygones

Gast
ok, es wurde geklickt:
Code:
Object o = table.getValueAt(table.getSelectedRow(), table.getSelectedColumn());
if(o.toString.endsWith(".txt")) {
   // Text datei mach was;
}
 

the_brain

Mitglied
danke für die antwort, das ist genau das nach dem ich gesucht hab!

hab deinen vorschlag jetzt implementiert, aber bei der toString Methode spinnt irgendwas.

ich habs jetzt mal so gelöst, aber hast du ne ahnung warums bei der version von dir nicht funktioniert?


Object klick = myFiles.getValueAt(myFiles.getSelectedRow(), myFiles.getSelectedColumn());
String klick1 = klick.toString();
if(klick1.endsWith(".txt"))
{
System.out.println("Ich bin ein .txt");
}

wenn ichs so mache unterstreicht er mir immer das wort klick bei .toSting.endsWith...

Object klick = myFiles.getValueAt(myFiles.getSelectedRow(), myFiles.getSelectedColumn());
if(klick.toSting.endsWith(".txt"))
{
System.out.println("Ich bin ein .txt");
}
 
B

bygones

Gast
man muss einem alten mann was verzeihen können...

aber schau dir mal die beiden Programmstücke genauer an -> du solltest den fehler selber finden :)

PS: Benutze für Code bitte immer die CODE Tags !
 

the_brain

Mitglied
hab den fehler schon, sorry dass ich nochmal nachgefragt hab, den fehler hab ich leider auch übersehen.

wie verwende ich denn die code tags wenn ich java code posten will? da ich leider erst ein neuling in diesem forum bin kenn ich mich damit noch nicht aus.

andere frage hab ich noch:
kennst du dich mit jTree aus?

und zwar möchte ich in meinem JTree (linke Seite der Splitpane) über das Menü od. einer Toolbar die Optionen einen neuen Ordner hinzuzufügen, einen Ordner zu löschen und einen umbennen hinzufügen.

hab mich schon ne Zeit damit auseinandergesetzt, aber das hat leider nur zu einer NULL POINTER EXCEPTION geführt.
 
B

bygones

Gast
wenn du code tags schreiben willst drückst du vor dem Code auf den "Code" Button pber dem eingabe feld. Wenn du fertig bist mit dem Code drückste einfach wieder drauf. oder du schreibst manuell <code>.....</code> (wobei die < > durch [ ] ersetzt werden müssen).

Einfach so zu sagen wg. Nullpointer exception ist nicht möglich - da muss schon code her. Allg. heißt du willst irgendwas mit der Variable machen, die ist aber noch nicht initialisiert, und daher null....

ich würde dir empfehlen - wenn es mit JTree weiter geht ein neues THema aufzumachen....
Schau mal was dir JAva sagt, wo der Fehler genau auftritt (die geworfene Exception sagt dir ja in welchem File und in welcher Zeile der Fehler auftrat) - und schau dir das mal an - ansonsten hier einfahc posten !!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
0x7F800000 Allg. Frage zum ev. dispatch thread, wie korrekt auf reaktion der Listener warten? AWT, Swing, JavaFX & SWT 4
G MVC Listener Frage AWT, Swing, JavaFX & SWT 6
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen


Oben