Java Swing, I/O 질문드립니다

조회수 37회

리스트나 DB를 사용하지 않고 swing과 파일입출력 만으로 회원가입 로그인 회원정보출력 시스템을 만들고 싶은데 중간에 막혀서 질문드립니다.

회원가입과 로그인쪽은 거의 완성을 하였는데 회원정보 출력쪽에서 막힙니다...

로그인창은

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import javax.swing.*;

public class ex1 extends JFrame{

    Image img = null;
    public ex1()
    {
        JPanel p = new JPanel();
        p.setLayout(null);
        JLabel label = new JLabel(new ImageIcon(""));
        add(label);
        Label t1= new Label("안녕하세요.");
        add(t1);
        Label t2= new Label("본 프로그램은 ID를 입력하셔");
        add(t2);
        Label t3= new Label("야만 사용이 가능합니다.");
        add(t3);
        Label t4= new Label("ID입력 후 로그인 버튼을 클릭하세요.");
        add(t4);
        Label b2= new Label("아이디:");
        add(b2);
        Label b3= new Label("비밀번호:");
        add(b3);
        TextField b4 = new TextField();
        add(b4);
        TextField b5 = new TextField();
        add(b5);
        b5.setEchoChar('*');//암호화
        JButton b6 = new JButton("로그인");
        add(b6);
        JButton b7 = new JButton("회원가입");
        add(b7);

        label.setBounds(0, 5, 350, 255);
        t1.setBounds(350, 5, 70, 40);
        t2.setBounds(350,35, 280, 40);
        t3.setBounds(350, 65,150, 40);
        t4.setBounds(350,95,250, 40);
        b2.setBounds(40, 265, 40, 40);
        b3.setBounds(40, 305, 60, 40);
        b4.setBounds(150, 265, 200, 30);
        b5.setBounds(150, 305, 200, 30);
        b6.setBounds(380, 265, 80, 30);
        b7.setBounds(380, 305, 90, 30);
        add(p);
        setSize(700, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("로그인 화면 ");
        setVisible(true);
        b7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {//회원가입창으로 이동
                ex2 f2= new ex2();
            }
        });
        b6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e2) {//로그인 할때
                try{
                    boolean flag = false;
                    String s;
                    String[] array;
                    BufferedReader bos = new BufferedReader(new FileReader("회원명단.txt"));
                    while((s=bos.readLine())!=null){
                        flag = false;
                        array=s.split("/");
                        if(b4.getText().equals(array[1])&&b5.getText().equals(array[2]))
                        {
                            JOptionPane.showMessageDialog(null, "로그인이 되었습니다!!");
                            ex3 f3 = new ex3();
                            flag = true;
                            break;
                        }
                    }
                    if(!flag)
                    {
                        JOptionPane.showMessageDialog(null, "로그인이 실패하였습니다.");
                    }
                    bos.close();
                }catch (IOException E10){
                    E10.printStackTrace();
                }
            }
        });
    }
}

이렇게 구성했고

회원정보 출력은

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

public class ex3 extends JFrame{//로그인 성공시

    public ex3(){
        JPanel p = new JPanel();
        Label l1= new Label("이름");
        Label l2 = new Label("아이디");
        Label l3= new Label("패스워드");
        Label l4 = new Label("주소");
        Label l5 = new Label("추가사항");
        add(l1);
        add(l2);
        add(l3);
        add(l4);
        add(l5);
        TextField t1 = new TextField();
        TextField t2 = new TextField();
        TextField t3 = new TextField();
        t3.setEchoChar('*');
        TextField t4 = new TextField();
        TextField t5 = new TextField();
        add(t1);
        add(t2);
        add(t3);
        add(t4);
        add(t5);
        t1.setEditable(false);
        t2.setEditable(false);
        t3.setEditable(false);
        t4.setEditable(false);
        t5.setEditable(false);
        JButton j1 = new JButton("확인");
        JButton j2 = new JButton("수정");
        add(j1);
        add(j2);
        l1.setBounds(40, 10, 40, 40);
        l2.setBounds(40, 50, 40, 40);
        l3.setBounds(40,90,60,40);
        l4.setBounds(40, 130, 40, 40);
        l5.setBounds(40, 170, 60, 40);
        t1.setBounds(120, 10, 200, 30);
        t2.setBounds(120, 50, 200, 30);
        t3.setBounds(120, 90, 200, 30);
        t4.setBounds(120, 130, 280, 30);
        t5.setBounds(120, 180, 280, 120);
        j1.setBounds(125, 330, 80, 30);
        j2.setBounds(240, 330, 80, 30);
        try { //로그인하고 회원정보 데이터 입력
            String s;
            String[] array;
            BufferedReader br = new BufferedReader(new FileReader("회원명단.txt"));
            while ((s = br.readLine()) != null) {
                array = s.split("/");
                t1.setText(array[0]);
                t2.setText(array[1]);
                t3.setText(array[2]);
                t4.setText(array[3]);
                t5.setText(array[4]);
            }
            br.close();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        add(p);
        setSize(500,500);
        setTitle("로그인 성공");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        j1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e3) {
                ex5 drawing = new ex5 ();
            }

        });
        j2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e4) {//수정버튼눌럿을 때
                // TODO Auto-generated method stub
                ex4 f4 = new ex4();
            }
        });
    }
}

이 코든데 여기서 로그인 했을때 입력한 아이디와 패스워드의 정보를 상속받아서 출력하면 될 것같은데 해결이 안되서 질문드립니다 ㅠ

  • 회원정보 출력 무엇이 안된다는 건가요? 정영훈 2019.5.12 19:37
  • 로그인하면 로그인한 아이디 비번을 확인하고 회원정보.txt에서 로그인한 아이디 비번에 맞는 회원정보를 출력해야되는데 그걸 어떻게 해야되는지 잘 모르겠네요... 유용상 2019.5.25 20:10

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.