2016-06-09 5 views
0

Ich habe meine JComboBox mit dem Wert der gleichen Datenbanktabelle gefüllt und ich brauche eine Idee, um den Wert von JComboBox anzuzeigen, wie es in JTextField ist.Verbinden von JComboBox mit JTextField

I Array Liste ist nicht statt ich mit Datenbank-Tabelle verwenden (mysql), unten ist das Programm

import java.sql.*; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.io.*; 
class Test extends JFrame implements ActionListener 
{ 
    JButton b1,b2; 
JComboBox jc; 
String name; 
JTextField t1; 
Connection con,conn; 
Statement st; 
PreparedStatement pst; 
ResultSet rs,rs1; 
Test() 
{ 
    setLayout(null);  
    JLabel l1=new JLabel("USER SELECTION :"); 
    l1.setBounds(100, 100, 150, 60); 
    add(l1); 
    JComboBox jc = new JComboBox(); 
    jc.setBounds(230,114,120,30); 
    jc.addActionListener(this); 
    add(jc); 
    JButton b1=new JButton("GENERATE PART NO. :"); 
    b1.setBounds(70, 340, 170, 30); 
    b1.addActionListener(this); 
    add(b1); 
    t1=new JTextField (10); 
    t1.setBounds(270, 340, 200, 30); 
    add(t1); 
    JButton b2=new JButton("BACK"); 
    b2.setBounds(190, 420,120, 30); 
    b2.addActionListener(this); 
    add(b2); 

    setSize(500, 500); 
     setResizable(false); 
     this.setVisible(true); 
     this.setLocationRelativeTo(null); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
    con= DriverManager.getConnection("jdbc:mysql://localhost/d02","root",""); 
    st = con.createStatement(); 

    String s = "select Userdata from user"; 

    rs = st.executeQuery(s); 

    while(rs.next()) 
    { 
      String name = rs.getString("Userdata"); 
     jc.addItem(rs.getString("Userdata")); 
    } 
} 
catch(Exception e) 
{ 
    JOptionPane.showMessageDialog(null, "ERROR"); 
} 
    finally 
{ 
    try 
    { 
     //st.close(); 
     rs.close(); 
     //con.close(); 
    } 
    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(null, "ERROR CLOSE"); 
    } 
} 
} 

    public void actionPerformed(ActionEvent ae) 

{ 
String str=ae.getActionCommand(); 
    if(str.equals("GENERATE PART NO. :")) 
    { 
try 
    { 
       Class.forName("com.mysql.jdbc.Driver"); 
       conn = DriverManager.getConnection("jdbc:mysql://localhost/d02","root",""); 

       String query="select value from user where Userdata=?"; 
       PreparedStatement pst=conn.prepareStatement(query); 
       String tmp=(String)jc.getSelectedItem().toString(); 
       if(jc.getSelectedItem()!=null) 
       pst.setString(1,tmp); 
       ResultSet rs1=pst.executeQuery(); 
       while(rs1.next()) 
       { 
        String add=rs1.getString("value"); 
        t1.setText(add); 
       } 

    } 
     catch(Exception ex) 
    { 
      ex.printStackTrace(); 
      JOptionPane.showMessageDialog(null, "ERROR CLOSE"); 
    } 
      if(str.equals("BACK")==true) 
      { 
       new categ(); 
       setVisible(false); 
      } 
    } 
} 
public static void main(String[] args) throws IOException 
    { 
    Test td=new Test(); 
    } 

}

+0

Können Sie mehr Code posten? Es wäre hilfreich, das Problem herauszufinden. – Beniton

+0

@ user6443988 Wahrscheinlich ist Ihre JComboBox null, wir können nicht ohne mehr Code tho sagen. Sie könnten auch einfach die ComboBox drucken, um zu sehen, ob das das Problem ist. – ScriptKiddy

+1

Keine Eingabe erforderlich, wenn Sie toString() verwenden; Sag einfach :) – ScriptKiddy

Antwort

1

hinzufügen ItemListener zu Ihrem JComboBox

jc.addItemListener(new java.awt.event.ItemListener() { 
      public void itemStateChanged(java.awt.event.ItemEvent evt) { 
       cmbMyItemStateChanged(evt); 
      } 
     }); 

Listener-Methode :

private void cmbMyItemStateChanged(java.awt.event.ItemEvent evt){          
    String value = jc.getSelectedItem().toString(); 
    if(jc.getSelectedItem()!=null){ 

    } 
}