2012-08-27 4 views
1

다른 클래스의 입력 된 값 "사용자 이름"에 어떻게 액세스합니까? 패키지 안에 코딩에 문제가 있습니다. 변수를 public으로 선언해야합니까?클래스의 문자열에 액세스하는 방법

package login; 

import java.awt.HeadlessException; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.*; 
import javax.swing.JOptionPane; 

@SuppressWarnings("serial") 
public class Login extends javax.swing.JFrame { 

    public Login() { 
     initComponents0(); 
    } 

    @SuppressWarnings("unchecked") 

    private void initComponents0() { 

     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     uname = new javax.swing.JTextField(); 
     jLabel3 = new javax.swing.JLabel(); 
     login = new javax.swing.JButton(); 
     reset = new javax.swing.JButton(); 
     pwd = new javax.swing.JPasswordField(); 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N 
     jLabel1.setText("Login Pane"); 
     jLabel2.setText("User Name:"); 
     jLabel3.setText("Password:"); 
     login.setText("Login"); 
     login.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
     String un = uname.getText(); 
     @SuppressWarnings("deprecation") 
     String pw = pwd.getText(); 
     try{ 
       FileInputStream fstream = new FileInputStream("data.dat"); 
       try (DataInputStream in = new DataInputStream(fstream)) { 
       BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
       String strLine; 
       boolean registered = false; 
       boolean registered0 = false; 
       while ((strLine = br.readLine()) != null) { 
       String values[] = strLine.split("\\|"); 
       if ((strLine.startsWith(un))&&(pw.equals(values[1]))){ 
       registered = true; 
       break; 
       } 
       if ((strLine.startsWith(un))&&(!pw.equals(values[1]))){ 
       registered0 = true; 
       break; 
       } 
       } 
       if(registered){ 
        JOptionPane.showMessageDialog(null,"Hello: "+un ,"Registration",JOptionPane.INFORMATION_MESSAGE); 
        File file = new File("temp.dat"); 
       try { 
           try (FileWriter writer = new FileWriter(file, false)) { 
           String data0 = un; 
           writer.write(data0); 
           }} 
       catch (IOException | HeadlessException z) { 
           JOptionPane.showMessageDialog(null, e); 
           } 
       } 
       else if(registered0){JOptionPane.showMessageDialog(null,"It seems you entered a wrong password! \n Please try again " ,"Admin",JOptionPane.INFORMATION_MESSAGE);} 
       else 
       { 
       int sel = JOptionPane.showConfirmDialog(null,"It seems that you haven't registered yet? \n Launch Registration Pane?","Admin",JOptionPane.INFORMATION_MESSAGE); 
       if (sel == JOptionPane.YES_OPTION){ 
       java.awt.EventQueue.invokeLater(new Runnable() { 
       @Override 
       public void run() { 
       new Register().setVisible(true); 
       }});} 

       }}} 
       catch ( IOException | HeadlessException ez){ 
       JOptionPane.showMessageDialog(null,"A null file was created in order to \n avoid File Catch errors","Admin",JOptionPane.INFORMATION_MESSAGE); 
       File file = new File("data.dat"); 
       try { 
           try (FileWriter writer = new FileWriter(file, true)) { 
           String data0 = "null"; 
           String data1 = "null"; 
           writer.write(data0+" | "+data1+"\n"); 
           }} 
       catch (IOException | HeadlessException z) { 
           JOptionPane.showMessageDialog(null, e); 
           } 
       } 
     }}); 
     reset.setText("Reset Field"); 
     reset.addActionListener(new ActionListener() { 
          @Override 
          public void actionPerformed(ActionEvent e) { 
           uname.setText(""); 
           pwd.setText(""); 
           } 
           }); 
     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
        .addComponent(jLabel1) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jLabel2) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jLabel3) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(login, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
           .addComponent(reset, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) 
          .addComponent(pwd)))) 
       .addContainerGap(30, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jLabel1) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel2) 
        .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel3) 
        .addComponent(pwd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(login) 
        .addComponent(reset)) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     pack(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
      public void run() { 
       new Login().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JButton login; 
    private javax.swing.JPasswordField pwd; 
    private javax.swing.JButton reset; 
    private javax.swing.JTextField uname; 
    // End of variables declaration 
} 

package login; 

import java.awt.HeadlessException; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.*; 
import javax.swing.JOptionPane; 

@SuppressWarnings("serial") 
public class Login extends javax.swing.JFrame { 
private String username,password; 
public String getUsername() { 
return username; 
} 
public String getPassword() { 
return password; 
} 

    public Login() { 
     initComponents0(); 
    } 

    @SuppressWarnings("unchecked") 

    private void initComponents0() { 

     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     uname = new javax.swing.JTextField(); 
     jLabel3 = new javax.swing.JLabel(); 
     login = new javax.swing.JButton(); 
     reset = new javax.swing.JButton(); 
     pwd = new javax.swing.JPasswordField(); 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N 
     jLabel1.setText("Login Pane"); 
     jLabel2.setText("User Name:"); 
     jLabel3.setText("Password:"); 
     login.setText("Login"); 
     login.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
     String un = uname.getText(); 
     @SuppressWarnings("deprecation") 
     String pw = pwd.getText(); 
     username = un; 
     password = pw; 

     try{ 
       FileInputStream fstream = new FileInputStream("data.dat"); 
       try (DataInputStream in = new DataInputStream(fstream)) { 
       BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
       String strLine; 
       boolean registered = false; 
       boolean registered0 = false; 
       while ((strLine = br.readLine()) != null) { 
       String values[] = strLine.split("\\|"); 
       if ((strLine.startsWith(un))&&(pw.equals(values[1]))){ 
       registered = true; 
       break; 
       } 
       if ((strLine.startsWith(un))&&(!pw.equals(values[1]))){ 
       registered0 = true; 

       break; 
       } 
       } 
       if(registered){ 

        username = un; 
        password = pw; 

        JOptionPane.showMessageDialog(null,"Hello: "+un ,"Registration",JOptionPane.INFORMATION_MESSAGE); 
        File file = new File("temp.dat"); 
       try { 
           try (FileWriter writer = new FileWriter(file, false)) { 
           String data0 = un; 
           writer.write(data0); 
           }} 
       catch (IOException | HeadlessException z) { 
           JOptionPane.showMessageDialog(null, e); 
           } 
       } 
       else if(registered0){JOptionPane.showMessageDialog(null,"It seems you entered a wrong password! \n Please try again " ,"Admin",JOptionPane.INFORMATION_MESSAGE);} 
       else 
       { 
       int sel = JOptionPane.showConfirmDialog(null,"It seems that you haven't registered yet? \n Launch Registration Pane?","Admin",JOptionPane.INFORMATION_MESSAGE); 
       if (sel == JOptionPane.YES_OPTION){ 
       java.awt.EventQueue.invokeLater(new Runnable() { 
       @Override 
       public void run() { 
       new Register().setVisible(true); 
       }});} 

       }}} 
       catch ( IOException | HeadlessException ez){ 
       JOptionPane.showMessageDialog(null,"A null file was created in order to \n avoid File Catch errors","Admin",JOptionPane.INFORMATION_MESSAGE); 
       File file = new File("data.dat"); 
       try { 
           try (FileWriter writer = new FileWriter(file, true)) { 
           String data0 = "null"; 
           String data1 = "null"; 
           writer.write(data0+" | "+data1+"\n"); 
           }} 
       catch (IOException | HeadlessException z) { 
           JOptionPane.showMessageDialog(null, e); 
           } 
       } 
     }}); 
     reset.setText("Reset Field"); 
     reset.addActionListener(new ActionListener() { 
          @Override 
          public void actionPerformed(ActionEvent e) { 
           uname.setText(""); 
           pwd.setText(""); 
           } 
           }); 
     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
        .addComponent(jLabel1) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jLabel2) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jLabel3) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(login, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
           .addComponent(reset, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) 
          .addComponent(pwd)))) 
       .addContainerGap(30, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jLabel1) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel2) 
        .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel3) 
        .addComponent(pwd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(login) 
        .addComponent(reset)) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     pack(); 
    } 

    /* 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
      public void run() { 
       new Login().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JButton login; 
    private javax.swing.JPasswordField pwd; 
    private javax.swing.JButton reset; 
    private javax.swing.JTextField uname; 
    // End of variables declaration 
} 
을 편집

답변

2

private 글로벌 비 정적 필드는 usernamepassword 필드를 개최합니다,이 내 코드입니다 나는 사용자 이름을 공개 선언,하지만 난 오류

를 얻을 수 입력을 수락하면 값을 글로벌 usernamepassword 변수에 할당합니다. 그런 다음 getter 메소드 (public)를 가지고 해당 인스턴스에 대해 usernamepassword을 반환하십시오.

뭔가 같은 :

public class Login extends javax.swing.JFrame { 
private String username,password;//assign private global fields for the instance 

//the variables are assigned when you accept user input 

public String getUsername() { 
return username; 
} 
public String getPassword() { 
return password; 
} 
} 

당신은 다음과 같이 할 것입니다 : 당신은 전화 또는 개인 변수를 편집하기 위해 당신 private 변수에 대한 공공 세터와 게터가 필요

Login lg=new Login();//create new instance to gain access to getter methods 
//wait for it to return or until user has enetered the credentials 
System.out.println(lg.getUsername()); 
System.out.println(lg.getPassword()); 
+0

제발 그 코드를 보여주세요 :) – JFetz2191

+0

@ JFetz2191 편집 된 게시물보기 –

+0

** global **은 (는) 무엇을 의미합니까? –

2

을 수업의 밖에서. 이를 OOP이라는 중요한 개념 중 하나 인 encapsulation이라고합니다. 당신은 더 알고 있기 때문에 구글을 원할지도 모른다.

1

전역 범위에서 변수를 선언하고이 변수를 Public 액세스 지정자로 선언하십시오. 또는

선언 된 변수 Private에 게터 메서드를 사용하십시오. 해당 게터 메서드 Public을 만듭니다.

관련 문제