2017-06-16 19 views
-2

Javaのもう一つの質問...基本的なことは分かっていますが、私はプロではありません。Java - GUIの別のクラスの文字列へのアクセス

だから私はMain.java

public class Main { 
public static void main(String[] args) { 
    System.setProperty("webdriver.gecko.driver", "C:/geckodriver.exe"); 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("https://my.emerchantpay.com/"); 
    eMerchantPay emp = PageFactory.initElements(driver, eMerchantPay.class); 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      JFrame frame = new MainFrame("Please enter your credentials"); 
      frame.setSize(500, 400); 
      //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setVisible(true); 
     } 
    }); 

    emp.uid(username); 
    emp.pwd(password); 
    emp.LoginButton.click(); 

を持っており、文字列がDetailsPanel.java

public class DetailsPanel extends JPanel{ 

private static final long serialVersionUID = 1234567891; 

private EventListenerList listenerList = new EventListenerList(); 

public DetailsPanel() { 
    Dimension size = getPreferredSize(); 
    size.width = 250; 
    setPreferredSize(size); 

    setBorder(BorderFactory.createTitledBorder("Personal Details")); 

    JLabel nameLabel = new JLabel("Name: "); 
    JLabel passwordLabel = new JLabel("Password: "); 

    final JTextField nameField = new JTextField(10); 
    final JPasswordField passwordField = new JPasswordField(10); 

    final JButton addBtn = new JButton("Submit"); 

    addBtn.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(java.awt.event.ActionEvent e) { 
      String name = nameField.getText(); 
      String password = passwordField.getText(); 

      String text = name + ": " + password + "\n"; 
      JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(addBtn); 
      frame.dispose(); 
      System.out.println (text); 
     } 
    }); 

    setLayout(new GridBagLayout()); 

    GridBagConstraints gc = new GridBagConstraints(); 

    /// First column /// 
    gc.anchor = GridBagConstraints.LINE_END; 
    gc.weightx = 0.5; 
    gc.weighty = 0.5; 

    gc.gridx = 0; 
    gc.gridy = 0; 
    add(nameLabel, gc); 

    gc.gridx = 0; 
    gc.gridy = 1; 
    add(passwordLabel, gc); 

    /// Second column /// 
    gc.anchor = GridBagConstraints.LINE_START; 

    gc.gridx = 1; 
    gc.gridy = 0; 
    add(nameField, gc); 

    gc.gridx = 1; 
    gc.gridy = 1; 
    add(passwordField, gc); 

    /// Final row /// 
    gc.weighty = 10; 

    gc.anchor = GridBagConstraints.FIRST_LINE_START; 

    gc.gridx = 1; 
    gc.gridy = 2; 
    add(addBtn, gc); 
} 

public void fireDetailEvent(DetailEvent event) { 
    Object[] listeners = listenerList.getListenerList(); 

    for (int i=0; i < listeners.length; i += 2) { 
     if (listeners[i] == DetailListener.class) { 
      ((DetailListener)listeners[i+1]).detailEventOccured(event); 
     } 
    } 
} 

public void addDetailsListener(DetailListener listener) { 
    listenerList.add(DetailListener.class, listener); 
} 

public void removeDetailListener(DetailListener listener) { 
    listenerList.remove(DetailListener.class, listener); 

} 

ので、文字列がここにあります

String name = nameField.getText();

String password = passwordField.getText();

に位置しています

Main.javaからこれらのファイルにアクセスするにはどうすればよいですか?名前の値をemp.uid(username);に割り当てる必要があります

+0

この名前/パスワードの部分については、「JDialog」を使用することをお勧めします。次の質問を参照してください。https://stackoverflow.com/questions/6555040/multiple-input-in-joptionpane-showinputdialog – Berger

+0

*「私基本的なことを知っている.. *あなたはコマンドラインのアプリケーションに取り組んでいるはずです。基本がソートされるまで。 GUIは高度なトピックです。 –

+0

@AndrewThompson確かに、私はSystem.out.println()を使う方法を知っています。私は現時点でGUIを学んでいます。とにかくありがとう;) –

答えて

1

フィールドはパッケージ保護されているため、同じパッケージに表示されます。

ただし、アクセスするにはDetailsPanelのインスタンスが必要です。あなたのMainクラスがDetailsPanelを使用して、あなたはこのようなものを使用できるよう

、:(。非推奨Stringにパスワードを返すようにgetText()方法を持っているJPasswordFieldセキュリティ上の理由から)

DetailsPanel details = new DeatilsPanel(); 
... 
String name = details.nameField.getText(); 
char[] password = details.passwordField.getPassword(); 

+0

ありがとうございます!それは働いた:) –

0

DetailsPanel.javaファイルに2つのデータ・メンバーを作成し、名前とパスワードに名前を付けることができます。 あなたMain.javaでは、あなたがDetailsPanelのオブジェクトを作成し、名前の値にアクセスできるオブジェクトを使用することができますし、パスワード

Main.java

DetailsPanel obj=new DetailsPanel(); 
emp.uid(obj.name); 
emp.pwd(obj.password); 

DetailsPanel.java

class DetailsPanel{ 
String name; 
String password; 
} 

基本を得るのを助けてくれることを願っています。

+0

ありがとう、私はこれを私のコードで後で使用する! –

関連する問題