2016-09-28 3 views
0

이름, 주소 등의 사용자 정보를 가져 오는 BasicInfoWindow 클래스가 있습니다. 그런 다음 다른 클래스 ReviewandSubmit을 사용하여 텍스트를 표시합니다. BasicInfoWindow에서 JTextArea에 입력 한 사용자. 각 패널을 전환하기 위해 카드 레이아웃을 사용하고 있습니다. BasicInfoWindow에서 정보를 보내고 ReviewandSubmit에서 정보를받는 방법을 잘 모르겠습니다. 여기에 지금까지 내 코드입니다 :한 클래스의 텍스트 필드 정보 가져 오기 및 다른 클래스의 JTextArea에 표시

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Main extends JPanel 
{ 
    private static void createAndShowGUI() 
    { 
     final Main test = new Main(); 

     JPanel buttonPanel = new JPanel(new BorderLayout()); 

    JPanel southPanel = new JPanel(); 
    buttonPanel.add(southPanel, BorderLayout.SOUTH); 

    final JButton btnNext = new JButton("NEXT"); 
    final JButton btnPrev = new JButton("PREVIOUS"); 

    buttonPanel.add(btnNext, BorderLayout.EAST); 
    buttonPanel.add(btnPrev, BorderLayout.WEST); 

    btnNext.addActionListener(new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
      test.nextCard(); 
     } 

    }); 

    btnPrev.addActionListener(new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
      test.prevCard(); 
     } 

    }); 

    JFrame frame = new JFrame("Employment Application"); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    frame.getContentPane().add(test); 
    frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH); 
    //frame.setSize(750,500); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(false); 
    frame.setVisible(true); 
} 

public static void main(String [] args) 
{ 
    SwingUtilities.invokeLater(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      createAndShowGUI(); 
     } 
    }); 
} 

private CardLayout cardLayout = new CardLayout(); 
private JPanel cardShowingPanel = new JPanel(cardLayout); 

public Main() 
{ 
    BasicInfoWindow window1 = new BasicInfoWindow(); 
    cardShowingPanel.add(window1, "1"); 

    EmploymentHistoryWindow window2 = new EmploymentHistoryWindow(); 
    cardShowingPanel.add(window2, "2"); 

    EducationAndAvailbleWindow window3 = new EducationAndAvailbleWindow(); 
    cardShowingPanel.add(window3, "3"); 

    ReviewAndSubmitWindow window4 = new ReviewAndSubmitWindow(); 
    cardShowingPanel.add(window4, "4"); 


    setLayout(new BorderLayout()); 

    add(cardShowingPanel, BorderLayout.CENTER); 
} 

public void nextCard() 
{ 
    cardLayout.next(cardShowingPanel); 
} 

public void prevCard() 
{ 
    cardLayout.previous(cardShowingPanel); 
} 

public void showCard(String key) 
{ 
    cardLayout.show(cardShowingPanel, key); 
} 


} 

BasicInfo 클래스 몇 가지 방법

ommitted는
public class BasicInfoWindow extends JPanel 
{ 
    private JTextField txtName, txtAddress, txtCity, txtState, txtZipCode, txtPhoneNumber, txtEmail; 
    private JComboBox cbDate, cbYear, cbMonth; 
    private JLabel labelName, labelAddress, labelCity, labelState, labelZipCode, labelPhoneNumber, labelEmail, labelDOB; 
    private JButton btnClear; 

    public BasicInfoWindow() 
    { 
     createView(); 
    } 

    private void createView() 
    { 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     add(panel); 

     northPanel(panel); 

     centerPanel(panel); 

     southPanel(panel); 
    } 

    public ArrayList<HiringPersonInfo> sendInfo() 
    { 
     String name = txtName.getText(); 
     String address = txtAddress.getText(); 
     String city = txtCity.getText(); 
     String state = txtState.getText(); 
     String zip = txtZipCode.getText(); 
     String phone = txtPhoneNumber.getText(); 
     String email = txtEmail.getText(); 
     String DOB = cbMonth.getSelectedItem() + " " + cbDate.getSelectedItem() + " " + cbYear.getSelectedItem(); 

     HiringPersonInfo addNewInfo = new HiringPersonInfo(name, address, city, state, zip, phone, email, DOB); 

     ArrayList<HiringPersonInfo> personInfo = new ArrayList(); 
     personInfo.add(addNewInfo); 

     return personInfo; 

    } 

ReviewAndSubmit 클래스

public class ReviewAndSubmitWindow extends JPanel 
{ 
    private JButton btnSubmit; 

    public ReviewAndSubmitWindow() 
    { 
     createView(); 
    } 

    private void createView() 
    { 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     add(panel); 

     northPanel(panel); 
     centerPanel(panel); 
     southPanel(panel); 
    } 

    private void northPanel(JPanel panel) 
    { 
     JPanel northPanel = new JPanel(); 
     panel.add(northPanel, BorderLayout.NORTH); 

     JLabel labelMessage = new JLabel("Review and Submit"); 
     labelMessage.setFont(new Font("Serif", Font.BOLD, 25)); 
     northPanel.add(labelMessage, BorderLayout.CENTER); 
    } 

    private void centerPanel(JPanel panel) 
    { 
     JPanel centerPanel = new JPanel(); 

     JTextArea showReview = new JTextArea(); 
     showReview.setLineWrap(true); 
     showReview.setWrapStyleWord(true); 
     showReview.setEditable(false); 
     JScrollPane scrollPane = new JScrollPane(showReview); 
     scrollPane.setPreferredSize(new Dimension(600, 385)); 
     centerPanel.add(scrollPane, BorderLayout.CENTER); 

     BasicInfoWindow getInfo = new BasicInfoWindow(); 
     showReview.append(getInfo.sendInfo().toString()); 

     panel.add(centerPanel); 
    } 

    private void southPanel(JPanel panel) 
    { 
     JPanel southPanel = new JPanel(); 
     panel.add(southPanel, BorderLayout.SOUTH); 

     btnSubmit = new JButton("SUBMIT"); 
     // creates a new file 
     southPanel.add(btnSubmit); 
    } 
} 

답변

1

당신은 하나 개의 인스턴스를 인스턴스화하는 HiringPersonInfo 클래스에서 싱글 톤 패턴을 사용할 수 있습니다 클래스의 해당 인스턴스를 ArrayList에 추가 할 수 있습니다.

싱글 톤 패턴을 사용하면 해당 패키지의 모든 클래스에서 공유 할 수있는 객체의 인스턴스 하나를 만들 수 있습니다. OOP에서 "글로벌"변수처럼 생각할 수 있습니다.

+0

HiringPersonInfo와 같은 또 다른 클래스가 있는데, getters와 setters가 있습니다. 거기에 싱글 톤 패턴을 추가해야합니까? –

+0

그것은 그 클래스를 어떻게 사용하고 있는지에 따라 다릅니다. 클래스간에 데이터를 전달할 수없고 "글로벌"변수처럼 작동해야한다면 그렇지 않으면 그렇지 않을 것입니다. 아마도 여기에 싱글 톤 패턴을 구현할 필요가 없을 것입니다. – Darney

+0

좋아, 이제 알았어. 고마워. –

관련 문제