2016-12-30 7 views
2

私はここに2つのメニュー項目があります.1つは学生情報用で、もう1つは教師情報用です.iは学生と教師の両方のメニューを追加しました。Javaの複数のメニュー項目にイベントリスナーが含まれていますか?

私は、メニューとメニュー1にアクションを追加する方法を打ちました。ユーザがメニュー1をクリックした後、学生情報が表示され、メニュー2のために教師情報アクションが実行されるはずです。アクションリスナーを追加する場所と学生と教師の操作を混同します。

私はjava.kindlyソリューションに事前に任意の助け

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

public class Searchdb extends JFrame implements ActionListener { 

//Initializing Components 
    JLabel lb,lbd,lb1, lb2, lb3, lb5; 
    JTextField tf1, tf2,tf3,tf5,tfd; 
    JButton btn; 
JMenuBar menuBar = new JMenuBar(); 
    JMenu menu = new JMenu("Student"); 
    JMenu menu1 = new JMenu("Teacher"); 
    //Creating Constructor for initializing JFrame components 
    Searchdb() { 
     //Providing Title 
     super("Fetching Roll Information"); 

     setJMenuBar(menuBar); 
     menuBar.add(menu); 
     menuBar.add(menu1); 


     lb5 = new JLabel("Roll Number:"); 
     lb5.setBounds(20, 20, 100, 20); 
     tf5 = new JTextField(20); 
     tf5.setBounds(130, 20, 200, 20); 

     lbd = new JLabel("Date:"); 
     lbd.setBounds(20, 50, 100, 20); 
     tfd = new JTextField(20); 
     tfd.setBounds(130, 50, 200, 20); 


     btn = new JButton("Submit"); 
     btn.setBounds(50, 50, 100, 20); 
     btn.addActionListener(this); 

     lb = new JLabel("Fetching Student Information From Database"); 
     lb.setBounds(30, 80, 450, 30); 
     lb.setForeground(Color.black); 
     lb.setFont(new Font("Serif", Font.PLAIN, 12)); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(500, 500); 

     lb1 = new JLabel("Name:"); 
     lb1.setBounds(20, 120, 100, 20); 
     tf1 = new JTextField(50); 
     tf1.setBounds(130, 120, 200, 20); 
     lb2 = new JLabel("Fathername:"); 
     lb2.setBounds(20, 150, 100, 20); 
     tf2 = new JTextField(100); 
     tf2.setBounds(130, 150, 200, 20); 
     lb3 = new JLabel("State:"); 
     lb3.setBounds(20, 180, 100, 20); 
     tf3 = new JTextField(50); 
     tf3.setBounds(130, 180, 200, 20); 

     setLayout(null); 

     //Add components to the JFrame 
     add(lb5); 
     add(tf5); 
     add(lbd); 
     add(tfd); 
     add(btn); 

     add(lb); 
     add(lb1); 
     add(tf1); 
     add(lb2); 
     add(tf2); 
     add(lb3); 
     add(tf3); 


     //Set TextField Editable False 
     tf1.setEditable(false); 
     tf2.setEditable(false); 
     tf3.setEditable(false); 

    } 

    public void actionPerformed(ActionEvent e) { 
     //Create DataBase Coonection and Fetching Records 

     try { 
      String str = tf5.getText(); 

      Datestri = tfd.getText();//Getting the unable to convert String to Date error 

      System.out.println(str); 
      System.out.println(stri); 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//host:port/servicename","username","password"); 
      PreparedStatement st = con.prepareStatement("select Name,Fathername,State from student_db where roll_number=? and medium=?"); 
      System.out.println(st); 
      st.setString(1, str); 
      st.setDate(2, stri); 



      //Excuting Query 
      ResultSet rs = st.executeQuery(); 
      System.out.println(rs); 

      if (rs.next()) { 
       String s = rs.getString(1); 
       String s1 = rs.getString(2); 
       String s2 = rs.getString(3); 


       //Sets Records in TextFields. 
       tf1.setText(s); 
       tf2.setText(s1); 
       tf3.setText(s2); 

      } else { 
       JOptionPane.showMessageDialog(null, "Student not Found"); 
      } 

      //Create Exception Handler 
     } catch (Exception ex) { 

      System.out.println(ex); 
     } 
    } 

    public void actionPerformed(ActionEvent e) { 
     //Create DataBase Coonection and Fetching Records 

     //Teacher information should be retrieved from the db 

     } 

//Running Constructor 

    public static void main(String args[]) { 
     new Searchdb(); 
    } 
} 

感謝を示唆して、イベントとアクションのリスナーに新しいです。

答えて

2

希望、これはあなたが、あなたは以下のソリューションを探す 、のMouseListenerを使用することができます

menu.addMenuListener(new MenuListenerAdapter()); 
+0

この回答が問題を解決した場合は、受け入れ済みとマークしてください... !!! – Pradnyarani

+0

あなたは正確にどこに私のコードでlistener.itを追加してください正確に教えてください@Pradnyarani – sathya

+0

コンストラクタSearchdb() – Pradnyarani

1

メニュー上のMenuListenerを追加するのMenuListener

class MenuListenerAdapter implements MenuListener { 

    @Override 
    public void menuSelected(MenuEvent e) { 
     System.out.println("Menu Selected"); 
    } 

    @Override 
    public void menuDeselected(MenuEvent e) { 
     System.out.println("Menu Deselected"); 
    } 

    @Override 
    public void menuCanceled(MenuEvent e) { 
     System.out.println("Menu Canceled"); 
    } 
} 

を使用することができますJMenuのため

を助けます、学生と教師のメニューをクリックするとコンソールが表示されます

import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JTextField; 

public class Searchdb extends JFrame implements ActionListener { 

    //Initializing Components 
    JLabel lb, lbd, lb1, lb2, lb3, lb5; 

    JTextField tf1, tf2, tf3, tf5, tfd; 

    JButton btn; 

    JMenuBar menuBar = new JMenuBar(); 

    JMenu menu = new JMenu("Student"); 

    JMenu menu1 = new JMenu("Teacher"); 

    //Creating Constructor for initializing JFrame components 
    Searchdb() { 
     //Providing Title 
     super("Fetching Roll Information"); 

     setJMenuBar(menuBar); 
     menuBar.add(menu); 
     menuBar.add(menu1); 

     menu.addMouseListener(new MouseListenerForStudentAndTeacher()); 
     menu1.addMouseListener(new MouseListenerForStudentAndTeacher()); 

     lb5 = new JLabel("Roll Number:"); 
     lb5.setBounds(20, 20, 100, 20); 
     tf5 = new JTextField(20); 
     tf5.setBounds(130, 20, 200, 20); 

     lbd = new JLabel("Date:"); 
     lbd.setBounds(20, 50, 100, 20); 
     tfd = new JTextField(20); 
     tfd.setBounds(130, 50, 200, 20); 

     btn = new JButton("Submit"); 
     btn.setBounds(50, 50, 100, 20); 
     btn.addActionListener(this); 

     lb = new JLabel("Fetching Student Information From Database"); 
     lb.setBounds(30, 80, 450, 30); 
     lb.setForeground(Color.black); 
     lb.setFont(new Font("Serif", Font.PLAIN, 12)); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(500, 500); 

     lb1 = new JLabel("Name:"); 
     lb1.setBounds(20, 120, 100, 20); 
     tf1 = new JTextField(50); 
     tf1.setBounds(130, 120, 200, 20); 
     lb2 = new JLabel("Fathername:"); 
     lb2.setBounds(20, 150, 100, 20); 
     tf2 = new JTextField(100); 
     tf2.setBounds(130, 150, 200, 20); 
     lb3 = new JLabel("State:"); 
     lb3.setBounds(20, 180, 100, 20); 
     tf3 = new JTextField(50); 
     tf3.setBounds(130, 180, 200, 20); 

     setLayout(null); 

     //Add components to the JFrame 
     add(lb5); 
     add(tf5); 
     add(lbd); 
     add(tfd); 
     add(btn); 

     add(lb); 
     add(lb1); 
     add(tf1); 
     add(lb2); 
     add(tf2); 
     add(lb3); 
     add(tf3); 

     //Set TextField Editable False 
     tf1.setEditable(false); 
     tf2.setEditable(false); 
     tf3.setEditable(false); 

    } 

    public void actionPerformed(ActionEvent e) { 

     // removed code, you can add your code later on 
    } 

    public static void main(String args[]) { 

     new Searchdb(); 
    } 

    private class MouseListenerForStudentAndTeacher extends MouseAdapter { 

     @Override 
     public void mouseClicked(MouseEvent e) { 

      if (e.getSource() == menu) { 
       System.out.println("Student Menu Clicked"); 
      } 
      if (e.getSource() == menu1) { 
       System.out.println("Teacher Menu Clicked"); 
      } 

     } 
    } 
} 
+0

私は試して更新を与えるだろう@ Nilesh Jadav – sathya

+0

確実@ Nilesh Jadav – sathya

+0

学生と教師のためにメニューバーがクリックされたときに出力をコンソールに表示しています。 教師メニュー(menu2)をクリックしてから、メニューが画面に表示されないようにするのが私の問題です。 私はメニュー(学生情報)を押してからmenu2にコンテンツを表示しないでください。@Nilesh Jadav – sathya

関連する問題