2016-09-28 1 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クラス いくつかの方法

省略さは
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

あなたは1つのインスタンスをインスタンス化するHiringPersonInfoクラスのシングルトンパターンを使用することができます提出中にそのクラスのインスタンスをArrayListに追加することができます。

シングルトンパターンを使用して、そのパッケージ内のすべてのクラスで共有できるオブジェクトのインスタンスを1つ作成できます。あなたはOOPのための方法で "グローバル"変数のように考えることができます。

+0

私はHiringPersonInfoのような別のクラスを持っています。ゲッタとセッタを持っています。そこにもシングルトンパターンを追加する必要がありますか? –

+0

どのようにそのクラスを使用しているかによって異なります。クラス間でデータを渡すことができず、 "グローバル"変数のように動作する必要がある場合はそれを必要とし、そうでない場合は、おそらくシングルトンパターンを実装する必要はありません。 – Darney

+0

私は今理解していると思う、ありがとう –

関連する問題