2013-04-22 3 views
0

나는 작업을하고 있습니다. 여기이 프레임에서 'Add Record'버튼을 클릭하면 JPanel 클래스를 확장하여 정의 된 Jframe에 패널을 추가합니다. 이제 Panel에서 생성 된 'save'버튼 클릭시에 패널에 정의 된 textFields에서 Text를 가져 와서 변수에 저장하려고합니다. 버튼 클릭시 아무 것도 저장되지 않습니다. 도와주세요. 미리 감사드립니다.다른 클래스에서 정의되고 JFrame에서 사용되는 JButtton의 리스너

import java.awt.Color; 
import java.sql.Savepoint; 
import java.util.Calendar; 
import javax.swing.*; 
import java.awt.event.*; 
import addPanel.panelAddForm; 


public class frontPage extends JFrame implements ActionListener 
{ 

//----------*******Variable Declarations*******------------------- 
    JPanel panelheaderImage, panelSideBar, panelTittle, panelTittleBar; 

      //panelFrontPage;   

    JLabel labelheaderImage, labelDate, labelTime, labelTittle, labelBottomImage; 

    JButton buttonAddRecord, buttonSearch, buttonadd; 

    JTextField nameSearch; 

    Calendar currentDate; 

    String year, month, day; 

//------------------------------------------------------------------ 


//--------******FRAME CONSTRUCTOR*********------------------------ 
    frontPage() 
    { 

     //------------frame initialization-------- 
     setBackground(Color.BLUE); 
     setSize(750, 850); 
     setVisible(true); 
     setLayout(null); 

//------------frame initialization ENDS------------------------  

//------------Panel Initialization Starts---------------------- 

     framBottomImage frameimg = new framBottomImage();  
     frameBottom framebottom = new frameBottom(); 
     //frameAddForm addform= new frameAddForm(); 


     add(frameimg.panelBottomImage); 
     add(framebottom.panelBottomText); 
     //add(addform.panelAddForm); 

     panelheaderImage = new JPanel(); 
     panelheaderImage.setBounds(0, 0, 600, 80); 
     add(panelheaderImage); 

     panelSideBar = new JPanel(); 
     panelSideBar.setBounds(520, 90, 200, 40); 
     panelSideBar.setLayout(null); 
     add(panelSideBar); 

     panelTittle = new JPanel(); 
     panelTittle.setLayout(null); 
     panelTittle.setBounds(0, 85, 550, 30); 
     add (panelTittle); 

     panelTittleBar = new JPanel(); 
     panelTittleBar.setBounds(0, 150, 450, 40); 
     panelTittleBar.setLayout(null); 
     add(panelTittleBar); 

     /*panelFrontPage = new JPanel(); 
     panelFrontPage.setLayout(null); 
     panelFrontPage.setBounds(0, 200, 500, 650); 
     panelFrontPage.setEnabled(true); 
     panelFrontPage.setVisible(true); 
     add(panelFrontPage);*/ 

//------------Panel Initialization Ends---------------------------- 

     labelheaderImage = new JLabel(new ImageIcon("C:\\Users\\SUN\\Desktop\\img.jpg")); 
     panelheaderImage.add(labelheaderImage); 


     currentDate = Calendar.getInstance(); 
     year = "" + currentDate.get(Calendar.YEAR); 
     month = "" + currentDate.get(Calendar.MONTH); 
     day = "" + currentDate.get(Calendar.DAY_OF_MONTH); 

     labelDate = new JLabel("Date:" + day + "/" + month + "/" + year); 
     labelDate.setBounds(0, 0, 90, 20); 
     panelSideBar.add(labelDate); 

     labelTime = new JLabel("Time:"); 
     labelTime.setBounds(0, 20, 50, 20); 
     panelSideBar.add(labelTime); 

     labelTittle = new JLabel("Patient's Case Paper"); 
     labelTittle.setBounds(150, 0, 250, 25); 
     panelTittle.add(labelTittle); 

     buttonAddRecord = new JButton("ADD RECORD"); 
     buttonAddRecord.setBounds(25, 0, 110, 25); 
     buttonAddRecord.addActionListener(this); 
     panelTittleBar.add(buttonAddRecord); 

     nameSearch = new JTextField(""); 
     nameSearch.setBounds(170, 0, 110, 25); 
     panelTittleBar.add(nameSearch); 

     buttonSearch = new JButton("Search"); 
     buttonSearch.setBounds(320, 0, 100, 25); 
     panelTittleBar.add(buttonSearch); 

     buttonadd = new JButton("add"); 
     buttonadd.setBounds(170, 410, 80, 25); 
     buttonadd.addActionListener(this); 
     panelTittleBar.add(buttonadd); 

    } 

    public void actionPerformed(ActionEvent ae) 
    { 
     panelAddForm addform = new panelAddForm(); 
     addform.save.addActionListener(this); 

     if(ae.getSource() == buttonAddRecord) 
     { 
      addform.revalidate(); 
      addform.repaint(); 
      add(addform); 
      System.out.println("at add record button end"); 
     } 

     if(ae.getSource() == addform.save) 
     { 
      System.out.println("Save Clicked"); 
     } 

    } 

} 

클래스 panelAddForm.java는 :

당신이 그것을에서 이벤트에 반응 함수 내에서 양식을 추가하기 때문에
package addPanel; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.security.PublicKey; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import javax.swing.*; 

public class panelAddForm extends JPanel 
{ 

    JLabel labelName, labelFirstName, labelLastName, labelMiddleName, 
      labelGender, labelAge, labelCity, labelContact, labelFees, 
      labelNote, registrationId; 

    public JTextField textFieldFirstName, textFieldMiddleName, textFieldLastName, 
       textFieldAge, textFieldCity, textFieldContact, textFieldFees, 
       textFieldId; 

    JTextArea textAreaNote; 

    JRadioButton male, female; 
    ButtonGroup selection; 
    public JButton save, cancel; 

    public panelAddForm() 
    { 
     this.setLayout(null); 
     setVisible(true); 
     setBounds(0, 200, 500, 450); 

     registrationId= new JLabel("Registration Id"); 
     registrationId.setBounds(20, 0, 120, 20); 
     add(registrationId); 

     textFieldId = new JTextField(); 
     textFieldId.setBounds(130, 0, 50, 20); 
     add(textFieldId); 


     labelName = new JLabel("Name"); 
     labelName.setBounds(20, 30, 50, 20); 
     add(labelName); 

     labelFirstName = new JLabel("First Name"); 
     labelFirstName.setBounds(100, 50, 80, 10); 
     add(labelFirstName); 

     textFieldFirstName = new JTextField(); 
     textFieldFirstName.setBounds(100, 30, 80, 20); 

     textFieldFirstName.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldFirstName.getText(); 
      Pattern p = Pattern.compile("[ 0-9,&%$#@!()*^,\t\n\f\r]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Please Enter Valid Name", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 

     } 
    }); 

    add(textFieldFirstName); 

//----------------------------------------MNAME--------------------------------------------------- 

    labelMiddleName= new JLabel("Middle Name"); 
    labelMiddleName.setBounds(190, 50, 80, 10); 
    add(labelMiddleName); 


    textFieldMiddleName = new JTextField(); 
    textFieldMiddleName.setBounds(190, 30, 80, 20); 

    textFieldMiddleName.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldMiddleName.getText(); 
      Pattern p = Pattern.compile("[ 0-9,&%$#@!()*^]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Please Enter Valid Name", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 

     } 
    }); 

    add(textFieldMiddleName); 

//-----------------------------------labelName----------------------------------------------------------- 

    labelLastName = new JLabel("Last Name"); 
    labelLastName.setBounds(280, 50, 80, 10); 
    add(labelLastName); 

    textFieldLastName = new JTextField(); 
    textFieldLastName.setBounds(280, 30, 80, 20); 

    textFieldLastName.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldLastName.getText(); 
      Pattern p = Pattern.compile("[ 0-9,&%$#@!()*^]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Please Enter Valid Name", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 
     } 
    }); 

    add(textFieldLastName); 

    labelGender = new JLabel("Gender"); 
    labelGender.setBounds(20, 70, 70, 20); 
    add(labelGender); 

    selection = new ButtonGroup(); 

    male = new JRadioButton("Male"); 
    male.setBounds(90, 70, 70, 20); 
    selection.add(male); 
    add(male); 

    female = new JRadioButton("Female"); 
    female.setBounds(170, 70, 70, 20); 
    selection.add(male); 
    add(female); 

//---------------------AGE--------------------------------------- 
    labelAge = new JLabel("Age"); 
    labelAge.setBounds(20, 110, 50, 20); 
    add(labelAge); 

    textFieldAge = new JTextField(); 
    textFieldAge.setBounds(100, 110, 80, 20); 

    textFieldAge.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldAge.getText(); 
      Pattern p = Pattern.compile("[ A-Z,a-z,&%$#@!()*^]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Numbers only", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 

     } 
    }); 
    add(textFieldAge); 

    //---------------------CITY--------------------------------------- 
    labelCity = new JLabel("City"); 
    labelCity.setBounds(20, 160, 80, 20); 
    add(labelCity); 

    textFieldCity = new JTextField(); 
    textFieldCity.setBounds(120, 160, 80, 20); 
    add(textFieldCity); 

    textFieldCity.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldCity.getText(); 
      Pattern p = Pattern.compile("[ 0-9,&%$#@!()*^]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Characters only", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 

     } 
    }); 

    //-----------------CONTACT--------------------------------------- 
    labelContact = new JLabel("Phone Number"); 
    labelContact.setBounds(20, 210, 100, 20); 
    add(labelContact); 

    textFieldContact = new JTextField(10); 
    textFieldContact.setBounds(120, 210, 80, 20); 
    add(textFieldContact); 

    textFieldContact.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldContact.getText(); 
      Pattern p = Pattern.compile("^[ 1-9][ 0-9]{12}$"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "numbers only", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 
     } 
    }); 

    add(textFieldContact); 

    //-----------------NOTE--------------------------------------- 

    labelNote = new JLabel("Note"); 
    labelNote.setBounds(20, 260, 140, 30); 
    add(labelNote); 


    textAreaNote = new JTextArea(); 
    textAreaNote.setBounds(100, 260, 200, 50); 
    add(textAreaNote); 

    //----------------FEES-------------------------------------- 
    labelFees = new JLabel("Consultation Fees"); 
    labelFees.setBounds(20, 330, 120, 20); 
    add(labelFees); 

    textFieldFees = new JTextField(); 
    textFieldFees.setBounds(140, 330, 80, 20); 
    add(textFieldFees); 

    textFieldFees.addKeyListener(new KeyAdapter() { 
     public void keyTyped(KeyEvent e) { 
      String input = textFieldFees.getText(); 
      Pattern p = Pattern.compile("[ A-Z,a-z,&%$#@!( )*^]"); 
      Matcher m = p.matcher(input); 
      if (m.find()) { 
       JOptionPane.showMessageDialog(null, "Numbers only", 
         "Sorry", JOptionPane.ERROR_MESSAGE); 
      } 

     } 
    }); 

// ---------------------------------------------------- 

    save = new JButton("SAVE"); 
    save.setBounds(25, 380, 70, 20); 
    //save.addActionListener(this); 
    add(save); 

    cancel = new JButton("CANCEL"); 
    cancel.setBounds(150, 380, 80, 20); 
    //cancel.addActionListener(this); 
    add(cancel); 
} 

} 

답변

1

, 이러한 이벤트를 생성 할 수있는 일이 없을 것. 이 두 줄을 actionPerformed에서 frontPage 또는 다른 초기 화 함수로 이동해보십시오.

public void actionPerformed(ActionEvent ae) 
{ 
    panelAddForm addform = new panelAddForm(); 
    addform.save.addActionListener(this); 
    ... 
} 
+0

대단히 감사합니다 !!!!!! 그것은 문제를 해결했습니다. – vibhor

+0

쿨! 도움이 되었다면 대답을 수락/upvote하십시오 :) –

+1

@vibhor : 시간이 지나면 [빈 체크 표시] (http://meta.stackexchange.com/questions/5234/how)를 클릭하여이 대답을 수락 할 수 있습니다. -does-accepting-an-answer-work/5235 # 5235)를 작성하십시오. – trashgod

관련 문제