2016-04-18 14 views
0

Ich versuche, eine JComboBox aus Daten in SqlServer zu füllen. Ich verwende WindowBuilder, wenn das einen Unterschied macht. Dies ist der Code, den ich bisher habe. Ich bin sehr neu in Java, also habe ich keine Ahnung, was ich tun soll.So füllen Sie JComboBox von SqlServer

import java.awt.EventQueue; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JTable; 

public class Customer extends JFrame{ 

private JFrame frame; 
private JTable table; 
private JTable tblInformation; 
private JTable tblHistory; 

/** 
* Launch the application. 
*/ 
public static void NewScreen() 
{ 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Customer window = new Customer(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 
/** 
* Create the application. 
*/ 
public Customer() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 819, 656); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JComboBox comboBox = new JComboBox(); 
    comboBox.setBounds(372, 28, 152, 22); 
    frame.getContentPane().add(comboBox); 

    JLabel lblCustomer = new JLabel("Select customer"); 
    lblCustomer.setFont(new Font("Tahoma", Font.PLAIN, 16)); 
    lblCustomer.setBounds(245, 30, 121, 16); 
    frame.getContentPane().add(lblCustomer); 

    JLabel lblCustomerInformation = new JLabel("Information"); 
    lblCustomerInformation.setFont(new Font("Tahoma", Font.PLAIN, 16)); 
    lblCustomerInformation.setBounds(12, 74, 92, 16); 
    frame.getContentPane().add(lblCustomerInformation); 

    JLabel lblHistory = new JLabel("History"); 
    lblHistory.setFont(new Font("Tahoma", Font.PLAIN, 16)); 
    lblHistory.setBounds(12, 334, 56, 16); 
    frame.getContentPane().add(lblHistory); 

    JButton btnEdit = new JButton("Edit"); 
    btnEdit.setBounds(12, 569, 97, 25); 
    frame.getContentPane().add(btnEdit); 

    JButton btnExit = new JButton("Exit"); 
    btnExit.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      Welcome.main(null); 
     } 
    }); 
    btnExit.setBounds(690, 569, 97, 25); 
    frame.getContentPane().add(btnExit); 

    JButton btnAdd = new JButton("Add"); 
    btnAdd.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) 
     { 
      String custIDString, firstName, lastName, companyName, phoneNumber, street, city, state, zip; 
      int custID; 

      custIDString = JOptionPane.showInputDialog(null,"Enter customer ID", "Customer ID", JOptionPane.INFORMATION_MESSAGE); 
      custID = Integer.parseInt(custIDString); 

      firstName = JOptionPane.showInputDialog(null,"Enter first name", "First Name", JOptionPane.INFORMATION_MESSAGE); 
      lastName = JOptionPane.showInputDialog(null,"Enter last name", "Last Name", JOptionPane.INFORMATION_MESSAGE); 
      companyName = JOptionPane.showInputDialog(null,"Enter company name", "Company Name", JOptionPane.INFORMATION_MESSAGE); 
      phoneNumber = JOptionPane.showInputDialog(null,"Enter phone number (xxx-xxx-xxx)", "Phone Number", JOptionPane.INFORMATION_MESSAGE); 
      street = JOptionPane.showInputDialog(null,"Enter street", "Street", JOptionPane.INFORMATION_MESSAGE); 
      city = JOptionPane.showInputDialog(null,"Enter city", "City", JOptionPane.INFORMATION_MESSAGE); 
      state = JOptionPane.showInputDialog(null,"Enter state", "State", JOptionPane.INFORMATION_MESSAGE); 
      zip = JOptionPane.showInputDialog(null,"Enter zip", "Zip", JOptionPane.INFORMATION_MESSAGE); 
     } 


    }); 
    btnAdd.setBounds(235, 569, 97, 25); 
    frame.getContentPane().add(btnAdd); 

    table = new JTable(); 
    table.setBounds(257, 168, 137, -66); 
    frame.getContentPane().add(table); 

    tblInformation = new JTable(); 
    tblInformation.setBounds(12, 96, 422, 156); 
    frame.getContentPane().add(tblInformation); 

    tblHistory = new JTable(); 
    tblHistory.setBounds(12, 357, 422, 177); 
    frame.getContentPane().add(tblHistory); 

    JButton btnDelete = new JButton("Delete"); 
    btnDelete.setBounds(474, 569, 97, 25); 
    frame.getContentPane().add(btnDelete); 
} 
public class TestComboBox extends JComboBox 
{ 
    private Connection sqlCon; 
    private Statement st; 

    public TestComboBox() 
    { 
     super(); 

     initComponents(); 
    } 
    private void initComponents() 
    { 
     try 
     { 
      st = sqlCon.createStatement(); 
      loadComboBox(); 
     } 
     catch (SQLException sqle) 
     { 
      System.out.println(sqle); 
     } 
    } 
    public void loadComboBox() 
    { 
     this.removeAllItems(); 
     this.addItem("Please select"); 
     try 
     { 
      ResultSet rs = st.executeQuery("select FirstName, LastName from Customer"); 
      while (rs.next()) 
      { 
       this.addItem(rs.getString("FirstName") + "" + rs.getString("LastName")); 
      } 
     } 
     catch (SQLException sqle) 
     { 
      System.out.println(sqle); 
     } 
    } 

} 
} 
+0

Machen Sie kleine Schritte. Laden Sie zuerst das Kombinationsfeld mit fest codierten Werten. Holen Sie dann Sachen aus einer Datenbank und legen Sie sie auf der Konsole ab. Dann lege die beiden zusammen. Sie werden mehr auf diese Weise lernen. –

Antwort

0
public void loadCombo(){ 
    Vector vec = new Vector(); 

     try { 
      resultset = //"resultst from database"; 
      while (resultset.next()) { 
       vec.add(resultset.getString("table column")); 
       } 
       yourCombo.setModel(new DefaultComboBoxModel(vec)); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

    } 

hier auch ein Beispiel, was im hier zu tun bekommt values von resultset die Werte in eine der vector innerhalb des comboboxvector dann im Putting Hinzufügen dieses versuchen.

+0

Wo in meinem Code geht das? – rpach17

+0

es ist eine "Methode", die Sie an jedem Punkt aufrufen können, wenn Sie 'Daten laden' beim Öffnen von 'jframe' aufrufen möchten, rufen Sie diese' Methode' im 'Konstruktor' auf – Priyamal

+0

Resultset hat einen Fehler. Also ist der Name meiner Combo-Box – rpach17

0

Haben Sie in Klassen über das Überschreiben der toString-Methode gehört? Ich werde versuchen es zu erklären.

Wenn Sie eine Klasse mit dem Namen Kunden haben und Attribute für diese Klasse sind Vorname und Nachname (mit Getter und Setter), dann könnten Sie toString-Methode in Kunden Klasse wie folgt außer Kraft setzen:

@Override 
public String toString() { 
    return firstName; 
} 

Dann könnten Sie erstellen eine Klasse Beispiel, die eine DefaultComboBoxModel wie folgt zurückgibt:

public static DefaultComboBoxModel getCustomerModel() { 
    DefaultComboBoxModel model = new DefaultComboBoxModel(); 
    ResultSet rs = st.executeQuery("select FirstName, LastName from Customer"); 
    while (rs.next()) { 
     Customer c = new Customer(); 
     c.setFirstName(rs.getString("FirstName")); 
     c.setLastName(rs.getString("LastName")); 
     model.addElement(c); 
    } 
    return model; 
} 

gesetzt Schließlich Ihr Combobox Modell wie folgt aus:

myComboBox.setModel(Example.getCustomerModel()); 

So in MeineComboBox werden Sie nur den Vornamen des Kunden sehen und wenn Sie einen Kunden von MeineComboBox Objekt erhalten mögen, dann:

Customer c = (Customer) myComboBox.getSelectedItem(); 

Grüße.

+0

Gibt es einen bestimmten Platz im Code, den dieser Code haben sollte? – rpach17

+0

Nein. Sie müssen Klassen separat erstellen. Die erste Klasse ist Kunde, wo Sie die Attribute firstName und lastName haben, die Sie von der Datenbank erhalten. Dann erstellen Sie eine Klasse Beispiel oder Datenbank oder den gewünschten Namen und in dieser Klasse erhalten Sie das DefaultComboBoxModel und schließlich eine Klasse MyWindow, wo es die JComboBox geht, die die Klasse Beispiel verwendet, um das Modell zu erhalten. Die Grundidee des oversettings von toString metod besteht darin, dass Sie entscheiden können, welche Informationen im JCombobox-Objekt angezeigt werden sollen und dass jedes Objekt einen Kunden darstellt. – iperezmel78