2017-02-10 12 views
1

私は3つのテーブルcountry(country_name)、state(state_name、country_name)、city(city_name、state_name)を含むcountryという名前のデータベースを持っており、ountry、state、cityをこのフレームが、コントロールはactionPerformedの下にif文第二()制御文がif文を通過していない

here is the image of console and frame

import java.awt.*; 
import java.awt.event.*; 
import java.sql.*; 

public class Admin extends Frame implements ActionListener 
{ 
    MenuBar mb; 
    Menu edit; 
    MenuItem country,state,city; 
    Label l1,l2,l3,l4,l5; 
    TextField t1,t2,t3; 
    Button b1,b2,b3; 
    Choice ch1,ch2; 
    String str1,str2,str3,str4; 
    Connection con; 
    PreparedStatement ps; 
    ResultSet rs; 

    public Admin() 
    { 
     super("Admin"); 

     setLayout(null); 
     setSize(700,700); 
     mb=new MenuBar(); 
     edit=new Menu("Edit"); 
     country=new MenuItem("Add Country"); 
     state=new MenuItem("Add State"); 
     city=new MenuItem("Add City"); 
     edit.add(country); 
     edit.add(state); 
     edit.add(city); 
     mb.add(edit); 

     country.addActionListener(this); 
     state.addActionListener(this); 
     city.addActionListener(this); 
     setMenuBar(mb); 
     setVisible(true); 
     try 
     { 
      Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
          con=DriverManager.getConnection 
("jdbc:ucanaccess://D:/java/country.mdb"); 
     } 
     catch(Exception e){} 
    } 
    public void actionPerformed(ActionEvent ae) 
    { 
     if(ae.getSource()==country){ 
      removeAll(); 
      l1=new Label("Country Name"); 
      t1=new TextField(20); 
      b1=new Button("Update"); 
      l1.setBounds(150,100,100,25); 
      t1.setBounds(290,100,100,25); 
      b1.setBounds(280,140,70,25); 

      add(l1); 
      add(t1); 
      add(b1); 
      b1.addActionListener(this); 
      setVisible(true); 
      //System.out.println("Outside of if"); 

      if(ae.getSource()==b1){ 
       System.out.println("Inside of if"); 
       try 
       { 
        ps=con.prepareStatement("insert into country 
    (country_name) values('"+t1.getText()+"')"); 
        ps.executeUpdate(); 

       } 
       catch(Exception e){} 
      } 
      //Add_country ob=new Add_country(); 
      //ob.setVisible(true); 
     } 
     else if(ae.getSource()==state){ 
      removeAll(); 
      l2=new Label("Select Country"); 
      ch1=new Choice(); 
      l3=new Label("Add State"); 
      t2=new TextField(); 
      b2=new Button("Update"); 

      l2.setBounds(150,100,100,25); 
      ch1.setBounds(290,100,100,25); 
      l3.setBounds(150,160,100,25); 
      t2.setBounds(290,160,100,25); 
      b2.setBounds(280,200,70,25); 

      add(l2); 
      add(ch1); 
      add(l3); 
      add(t2); 
      add(b2); 
      b2.addActionListener(this); 
      setVisible(true); 

      try 
      { 
       ps=con.prepareStatement("select country_name from country"); 
       rs=ps.executeQuery(); 
       while(rs.next()) 
       { 
        str1=rs.getString("country_name"); 
        ch1.addItem(""+str1); 
       } 
       if(ae.getSource()==b2){ 
        System.out.println("sdfghjk"); 
        str2=ch1.getSelectedItem(); 
        ps=con.prepareStatement("insert into state 
    (state_name,country_name) values('"+t2.getText()+"','"+str2+"')"); 
        ps.executeUpdate(); 


       } 
      } 
      catch(Exception e){} 
      //Add_state obj=new Add_state(); 
      //obj.setVisible(true); 
     } 
     else if(ae.getSource()==city){ 
      removeAll(); 
      l4=new Label("Select State"); 
      ch2=new Choice(); 
      l5=new Label("Add City"); 
      t3=new TextField(); 
      b3=new Button("Update"); 

      l4.setBounds(150,100,100,25); 
      ch2.setBounds(290,100,100,25); 
      l5.setBounds(150,160,100,25); 
      t3.setBounds(290,160,100,25); 
      b3.setBounds(280,200,70,25); 

      add(l4); 
      add(ch2); 
      add(l5); 
      add(t3); 
      add(b3); 
      b3.addActionListener(this); 
      setVisible(true); 
      try 
      { 
       ps=con.prepareStatement("select state_name from state"); 
       rs=ps.executeQuery(); 
       while(rs.next()) 
       { 
        str3=rs.getString("state_name"); 
        ch2.addItem(""+str3); 
       } 

       if(ae.getSource()==b3){ 
        System.out.println("sdfghjk"); 
        str4=ch2.getSelectedItem(); 
        ps=con.prepareStatement("insert into city 
    (city_name,state_name) values('"+t3.getText()+"','"+str4+"')"); 
        ps.executeUpdate(); 
       } 
      } 
      catch(Exception e){} 
      //Add_city obj=new Add_city(); 
      //obj.setVisible(true); 
     } 
    } 
    public static void main(String s[]) 
    { 
     Admin ob=new Admin(); 
    } 
} 
+0

のより良い管理を提供するためにHow to Use CardLayoutをお勧めしますか? –

+0

最初にif文が実行されていますが、ネストされたifが機能していない場合 – PanicLion

+1

==演算子を使用してオブジェクトを比較することはできません。 equals()メソッドを使用する必要があります。そのため、 "ae.getSource()== state" - 比較結果は期待される結果に現れることはありません。 – DiabolicWords

答えて

1

この...

if(ae.getSource()==country){ 
    //... 
    if(ae.getSource()==b1){ 

ヨーヨー、不可能である介されていませんUは二つの異なるコントロールによってトリガーされるActionEventが(彼らは次々に起こるだろう)

観察

単一 actionPerformedイベントを発生させることはできません
  • nullレイアウトを使用することは避けてください、ピクセル完璧なレイアウトがあります現代のUIデザイン内の錯覚。コンポーネントの個々のサイズに影響する要因は多すぎますが、いずれも制御できません。スウィングは、レイアウト管理者と協力してコアで作業するように設計されています。これにより、問題の終わりがなくなり、整理しようとする時間が長くなります。
  • AWTは時代遅れです。日なし、さらにはJavaFX
  • あなたは(データベース)リソースを閉じていないので、データベースにアクセスできない問題が発生する可能性があります。可能な解決策
  • ためThe try-with-resources Statementを見て私はまた、==はのMenuItemオブジェクトを比較して動作するかどうかをチェックたコンポーネントとビュー
関連する問題