SQL-Inhalt in Dialog anzeigen

Hi,

ich habe eine Idee für mein Projekt aber ich habe keinen Plan wie ich das bewerkstelligen soll…
ich habe eine GUI (ja genau die, aus dem anderen Thread :slight_smile: ) in der wird der Inhalt einer Tabelle dargestellt die aus einer mysql db kommen. Jetzt möchte ich zu einem dass man via mouseclicked Funktion auf die Zelle „Notiz“ den Inhalt in einem separaten Fenster (JDialog o.ä.) und zum anderen dass in diesem JDialog nicht nur der Inhalt aus Notiz steht sondern auch „datetime“ und „user“ der diese Notiz mal erfasst hat…
Daten sollen nicht editierbar sein aber dass kann man ja eh variabel einstellen…

Irgendeine Idee dazu ?

Klingt sehr allgemein. Allgemeiner wäre ja nur noch “Ich will dass Daten aus einer DB in einem GUI angezeigt werden”. Geht’s ETWAS konkreter? (Mangels DB-Kenntnissen werd’ ich vielleicht nicht so viel dazu sagen können (höchstens zum GUI-Teil), aber ja vielleicht andere…)

Wenn ein Benutzer auf die Zellen in der Spalte Notiz klickt, soll sich zum einen ein Fenster öffnen wo der Inhatlt aus Notiz zu lesen ist (manche Texte sind so lang dass man sie nicht in der Tabelle lesen kann) zudem soll in dem nun sich öffnenden Fenster zusätzlich das Datum + Nutzer angezeigt werden.

Hoffe ist verständlich.

Das schreiben und lesen aus der db passt aber eben das neue Fesnster (ich dachte da an ein JDialog weil eben kein schnick schnack drin sein soll) macht mir Mühe…

man kann auf Selektion in einer JTable (wie durch Mausklick) reagieren,
Suche ‘jtable selectionlistener’ oder allgemein umfangreiche Tutorials zu JTable

man kann auch wenn gewünscht Buttons in der JTable darstellen, Suche analog


ob du soweit schon bist und was genau dir ‘Mühe’ macht, sagst du nicht konkret…
JDialog grundsätzlich beherrschen, selektierten Eintrag bestimmen, zusätzliche Daten evtl. aus der DB holen und/ oder jedenfalls strukturiert in einem Dialog anzeigen,
alles Aufgaben die nacheinander anzugehen sind, aber alles recht überschaubar einfache Standard-Punkte

Vermutlich liegen die Daten in der Zeile der Tabelle ja schon vor, da muss man sie nicht erneut aus der Datenbank holen, sondern nur passend in einem Dialog anzeigen.

Hallo Crian, ja die Daten sind bereits aus der db im JTable… Anzeige klappt wunderbar, nur wie bekomme ich nun im neuen Fenster genau diese Daten angezeigt…

ich poste einfach mal den Code, auf die Gefahr hin dass jetzt alle Facepalm machen… :slight_smile:

        // Doppelklick mit Maus soll Editorfenster öffnen    
         if (evt.getClickCount() == 2) {                                        //doppelklick
             int row = jTable_Anzeige.getSelectedRow();                         //nimmt die selektierte Zeile
             int col = 4;                                                       //nimmt die Spalte 5, siehe Zeile 96
             Object obid = jTable_Anzeige.getValueAt( row, col );               //nimmt die Daten aus oben beschriebener Zelle
             String notiz = obid.toString();                                    //erstellt den String
                  
             JDialog JD = new JDialog();                                        //
             JD.setVisible(true);                                               //
         }
    }```

zumindest öffnet sich schonmal ein Fenster.. auch wenn nix drin steht da ich nicht verstehe und auch nichts finde wie ich nun die Werte aus der Tabelle nun uns JDialog bekomme... vermutlich auch mit einem String o.ä...

mit der ursprünglichen Tabelle, mit Daten aus der DB, hat das alles nichts zu tun,

du hast einfach nur einen String und willst einen JDialog damit sinnvoll darstellen…,
eine Sache die durchaus ein Problem bereiten kann,
aber als Frage zumindest ruhig so übersichtlich gestellt werden kann, ohne alles unwichtige drumherum,

JOptionPane als einfachere Variante kann interessant sein,
in allen Fällen Beispiele + Tutorials leicht suchbar für grundlegende Informationen, muss kaum hier komplett erklärt werden,
ein Link:
How to Make Dialogs (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

Erstmal Danke für Eure Geduld…

ist halt nicht einfach für jemanden der ungelernt ist.
hab das ganze nun so gelöst, sieht noch nicht schön aus aber es funzt :slight_smile:
Ich habe allerdings noch eine Frage, ich hatte mehrfach gelesen das die Anzeige teilweise nicht korrekt klappt wenn man den RowSorter aktiviert, bei mir klappts aber wunderbar auch wenn ich Spalte xy sortiere. Ist dieses „Problem“ erst mit
einer neueren Java Version gelöst worden ?

        // Doppelklick mit Maus soll Editorfenster öffnen    
         if (evt.getClickCount() == 2) {                                        
             int row = jTable_Anzeige.getSelectedRow();                         
             int col = 4;                                                       
             Object obid = jTable_Anzeige.getValueAt( row, col );               
             String notiz;                                                      
             notiz = obid.toString();
             JDialog JD = new JDialog();                                        
             JD.setTitle("Notizfeld");                                          
             JD.setSize(400,300);                                               
             JTextArea textfeld = new JTextArea();
             textfeld.setFocusable(false);            
             textfeld.setText(notiz);
             JD.add(textfeld);
             JD.setVisible(true);                                               
             
             
         }
    }```

wenn du entsprechene Quellen dazu posten würdest könnte man die genauer überprüfen, welches Problem konkret angesprochen ist

zu beachten ist in jedem Fall, welche Zeile man wie abfragt, im TableModel sind die Daten in anderer Reihenfolge abgelegt als in der GUI sortiert angezeigt,
dein Code mit getValueAt() auf JTable sollte aber immer das passende liefern

java - Why is TableRowSorter messing up my results? - Stack Overflow


sinnvoll wäre allgemein konsequent Variablen klein zu schreiben, zumindest den ersten Buchstaben, also jd statt JD

nabend zusammen,

ich habe mal eine Frage. Wie kann ich den oben beschriebenen String in eine andere Klasse einbinden (Es geht darum, mit NetBeans ein neuen JDialog zu erstellen den ich dann anpassen kann)?
Im Internet habe ich folgenden Beispielcode gefunden aber ich weiss nicht wie ich ihn anwenden muss…

private A a;
public B(A a){
this.a = a;
a.getStringName();
}
}```

etwas mit NetBeans zu erstellen usw. ist keine Programmierung, da kann es natürlich alle möglichen Probleme geben wie Dinge die man nicht machen kann,
oder Dinge die man macht und dann NetBeans nicht mag und schnell den gesamten Computer und vieles mehr zerstören…,

naja :wink: also reden kann man nur über Programmierung, und da ist das gegebene Beispiel schon ziemlich klar,
entweder man übergibt Dinge von A nach B, (A selber macht das oder C, welcher über A und B verfügt), und zwar im Konstrukor oder in einer späteren set-Methode,

oder man gibt B etwas an dem Dinge dann später abgefragt werden können, wiederum in Konstruktor oder set-Methode,
z.B. A selber übergeben, oder C übergeben und in C kann man A abfragen usw.

genauso musst du eh überall arbeiten:
wie kann die JTextArea den richtigen String anzeigen, ist die Klasse allwissend?
nein, es wurde ja einfach der String in einer setText()-Methode übergeben, nichts einfacher als das,

Alternative Konstruktor, gibt auch einen bei JTextArea:

JTextArea(String text)
Constructs a new TextArea with the specified text displayed.

eigene Klassen genauso aufbauen,

ein höheres Objekt wie die JTable oder die nicht genannte Klasse zu übergeben, so dass der String abgefragt werden kann,
wäre hier nicht so leicht, weil die Information aus dem Event, die row, dazu benötigt wird

Vielleicht ist das folgende das, was du suchst?

    private String weiterzugebendeVariable;

    A() {
        weiterzugebendeVariable = "huhu";
    }

    private void erstelleB() {
        B b = new B(weiterzugebendeVariable);
        b.machWas();
    }

}```

```class B {
    private final String weiterzugebendeVariable;

    B(String weiterzugebendeVariable) {
        this.weiterzugebendeVariable = weiterzugebendeVariable;
    }

    public void machWas() {
       // mach was mit weiterzugebendeVariable ...
    }

}```

Danke Slater und Crian,

da wird es auf jeden Fall verständlicher als der Code Schnipsel den ich gefunden habe… Dann ist ja das Wochenende gerettet und ich kann wieder etwas „basteln“… programmieren darf man es ja nicht nennen :wink: