2 Felder aus DB selektieren u. in JList - eines verstecken?

Status
Nicht offen für weitere Antworten.

Jeans78

Mitglied
Hi

Ich häng mal wieder fest. Wollte eine JList erstellen welche die Daten (company_name u. company_id) aus einer DB bezieht.
Ich weiss allerdings nicht...

1. wie 2 verschiedene Werte an das DefaultListModel übergeben werden können u. dann zur JList geaddet werden,

2. wie die Werte v. company_id versteckt werden/bleiben - sollen nicht angezeigt werden, werden allerdings für weitere abfragen benötigt u. machen die Sache dann wesentlich einfacher.

Danke schon mal für jegliche Hilfe.

Code:
        //List of companies
        companyPanel = new JPanel();
        companyPanel.setLayout(new BorderLayout());
        JLabel companiesLabel = new JLabel("Companies:");
        companyPanel.add(companiesLabel, BorderLayout.NORTH);

        companyModel = new DefaultListModel();
        
        try
        {
            Database db = new Database();
            String sql = "SELECT company_name  FROM companies ORDER BY companies.company_name";
            db.request(sql);
        
            while (db.result.next())
            {
               System.out.println("found a result");
               String  company = db.result.getString("company_name");
               companyModel.addElement(company);            
            }       
        } 
        catch(SQLException ex)
        {
            System.out.println("* Cannot create dataset! *");
            ex.printStackTrace();
        }
        
        
        choseCompany = new JList(companyModel);
 

merxleben

Aktives Mitglied
Hallo,

ich gehe mal davon aus, dass sowohl company_id als auch company_name in einem Objekt zusammen gespeichert sind.
Für die Darstellung in der Liste ist der ListCellRenderer zuständig. Implemetiere am besten einen entsprechenden ListCellRender. Ein Beispiel hierfür findest du in der Sun API Doku zu ListCellRenderer

Die ganz einfache und wenig flexible Variante besteht darin die toString() Methode in deiner Klasse mit den company Feldern zu überschreiben, so dass nur der Name ausgegeben wird.

Martin
 

Jeans78

Mitglied
Thanks für die Antworten..

Ich brauche eine JList, welche nur company_name ausgibt. In Verbindung zu jedem company_name soll auch die dazugehörige company_id ausgelesen werden, jedoch nich angezeigt werden. Wenn der User auf einen company_name klickt soll die company_id dann für weitere abfragen zur verfügung stehen.

Ich weiss zwar nich ganz auf was du denn begriff objekt beziehst. Also in der DB stehen diese in Beziehung zueinander. Im Bezug auf Java noch nich.. Was ich bis jetzt hab is nur das Objekt v. company_name.. Ich weiss jetzt nur nich wie ich company_id noch hinzufügen/adden kann zum DefaultListModel u. dann zu JList...

Wenn du weisst wie das funzt, kannst du mir das als code schnippsel zeigen - noch absoluter Newbie..
 

merxleben

Aktives Mitglied
Hallo,

um ein bischen konkreter zu werden, ein bischen Quelltext.

Hier erstmal ein Entwurf für eine Company Klasse.

Code:
class Company {
  protected String name;
  protected int id;

  // Setter, Getter und Konstruktoren
  .
  .
  .

  public String toString() {
    return name;
  }
}

Durch das Überschreiben der toString() Methode habe ich sichergestellt, dass nur der Name in der Liste auftaucht. Diese Objekte fügst du dann deinem DefaultListModel hinzu

Code:
DefaultListModel model = new DefaultListModel();

Company company = new Company()
// alternativ auch new Company(0,"xyz");
company.setName("xyz");
company.setId(0);

model.add(company);

JList list = new JList(model);


Ich hoffe du kannst damit was anfangen.

P.S.
Allerdings würde ich dir auch empfehlen, dich ein wenig mit dem objektorientierten Entwurf zu beschäftigen.

Martin[/code]
 

Jeans78

Mitglied
Danke erstmal, werd's morgen ausprobiern - sitz n ganzen tag schon vor'm Monitor u. bekomm grad nix mehr auf die Reihe. Werd wissen lassen ob's funktioniert hat.
 

André Uhres

Top Contributor
Hier wäre dann die "ListCellRenderer" Variante, d.h. du füllst deine JList
statt mit Strings, mit speziellen "Company" Objekten,
die durch einen ListCellRenderer dargestellt werden.
Das ist zwar in deinem Fall sicher nicht nötig, aber man könnte hiermit z.B. im Renderer
ein JPanel mit mehreren Spalten erzeugen um so mehr als ein Datenfeld darzustellen:
Code:
/*
 * ListDemo2.java
 */
package list;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
public class ListDemo2 extends JFrame implements ListSelectionListener{
    private JList dataList;
    public ListDemo2() {
        super("ListDemo2");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        Company[] data = {
            new Company("one",   "1"),
            new Company("two",   "2"),
            new Company("three", "3"),
            new Company("four",  "4")
        };
        dataList = new JList(data);
        dataList.setCellRenderer(new MyCellRenderer());
        add(new JScrollPane(dataList));
        dataList.addListSelectionListener(this);
    }
    public void valueChanged(ListSelectionEvent e) {
        if(e.getValueIsAdjusting())return ;
        System.out.println(((Company)dataList.getSelectedValue()).getCompanyID());
    }
    public static void main(String args[]) {new ListDemo2().setVisible(true);}
}

class MyCellRenderer extends DefaultListCellRenderer {
    public Component getListCellRendererComponent(
            JList list,
            Object value,   // value to display
            int index,      // cell index
            boolean iss,    // is the cell selected
            boolean chf)    // the list and the cell have the focus
    {
        super.getListCellRendererComponent(list, value, index, iss, chf);
        setText(((Company)value).getCompanyName());
        return this;
    }
}

class Company {
    private String companyName,companyID;
    public Company(String companyName, String companyID){
        this.companyName = companyName;
        this.companyID = companyID;
    }
    public String getCompanyName(){return companyName;}
    public String getCompanyID(){return companyID;}
    public String toString() {
        return getCompanyName() + ", " + getCompanyID();
    } 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
C Bestimmtes Objekt einer ArrayList in einer Methode selektieren Java Basics - Anfänger-Themen 8
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
L JTable und TableCellRenderer + selektieren Java Basics - Anfänger-Themen 3
B Manuelles Selektieren in JLists Java Basics - Anfänger-Themen 7
F Entität mit höchster ID per JPAQL selektieren Java Basics - Anfänger-Themen 3
P Bestimmten Stringabschnitt selektieren? Java Basics - Anfänger-Themen 2
G JTable und das selektieren Java Basics - Anfänger-Themen 7
2 Alles Selektieren in JEditorPane Java Basics - Anfänger-Themen 5
F Zeilen und Spalten in JTable Selektieren Java Basics - Anfänger-Themen 2
F 2D Array selektieren und überspielen? Java Basics - Anfänger-Themen 2
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
D JList ListSelectionEvent entfernen? Java Basics - Anfänger-Themen 13
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
S Export aus JList Java Basics - Anfänger-Themen 6
M Erste Schritte JList einträge Java Basics - Anfänger-Themen 1
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
I in listFiles() oder JList Dateiendungen entfernen Java Basics - Anfänger-Themen 14
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
B JFileChooser und JList Java Basics - Anfänger-Themen 7
OnDemand Enumeration <> JList Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben