2016-06-13 8 views
0

私は自分のJComboBoxにデータベーステーブルのUserdataを設定しましたが、私はjtextfieldにUserdataの対応する値を表示するアイディアが必要です私のjcomboboxのデータをクリックし、生成ボタンをクリックします。私は以下の、データベーステーブル(SQLyogの)を使用しています代わりに、アレイのリストを使用していないjcomboboxのデータを選択し、ボタンをクリックした後にjtextfieldに対応するデータベース値を取得する

は、私はあなたが以下のようなコードに変更したプログラム

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(); 
    } 
} 
+1

1)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)インデントするコード行とブロックの論理的で一貫した形式を使用します。インデントは、コードの流れをより簡単にするためのものです。 –

+1

注: 'JComboBox jc = new JComboBox();'このステートメントは、クラスの先頭にあるコンボボックスの宣言をシャドウイングします。おそらく 'jc = new JComboBox();でなければなりません。 //コンボを作成して既存の変数に割り当てます。 –

答えて

0

です。それがあなたの進歩に役立つことを願っています。このコードでは

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); 
     add(getUserDataCombo()); 
     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); 
     initUserData(); 
     this.setVisible(true); 
     this.setLocationRelativeTo(null); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    private JComboBox getUserDataCombo() { 
     if (jc == null) { 
      jc = new JComboBox(); 
      jc.setBounds(230, 114, 120, 30); 
      jc.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent e) { 
        JComboBox combo = (JComboBox) e.getSource(); 
        String data = String.valueOf(combo.getSelectedItem()); 
        //TODO: Do whatever you want with the data 
       } 
      }); 
     } 
     return jc; 
    } 

    private void initUserData() { 
     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

jcomboboxから選択されるたびに、同じテキストフィールド内に重複のないシリアルインクリメントカウンタ(ランダムではありません)を表示するのはどうですか? – user6443988

+0

@ user6443988私は理解できません。ユーザーデータを取得したら、その値を使用できます。 _serialインクリメントカウンタ(無作為にではなく)重複なしで何を意味するのかわからない – Beniton

+0

私の考えは、ボタンをクリックするたびに同じテキストフィールドの値とともにシリアル番号の数を表示することです。 – user6443988

0
 String tmp = (String)cmbCustomers.getSelectedItem(); 
    String query = "select CUSTOMER_ID from NORTHWIND_CUSTOMER where FULL_NAME = ?"; 

     try{ 
      pst = connect.prepareStatement(query); 
      pst.setString(1, tmp); 
      rs = pst.executeQuery(); 

      if(rs.next()){ 

      String add1 = rs.getString("CUSTOMER_ID"); 
      jTextField1.setText(add1); 

      }   



     }catch(Exception e){ 

      JOptionPane.showMessageDialog(null, e); 

     } 

あなたはのJTextFieldにテーブルの値を表示することができます。そのためにはjComboboxの右クリック・セレクト・イベント・ポップアップ・メニューを選択する必要があります。ポップアップメニューが表示され、上記のコードを挿入してください。 pst変数とrs変数は、使用する前に宣言されていたことを忘れていました。私はPreparedStatement pst = nullとResultSet rs = nullを宣言しました。

関連する問題