관리 메뉴

IT창고

자바(JAVA) 실습 - GUI 방명록 본문

프로그래밍/JAVA

자바(JAVA) 실습 - GUI 방명록

방구석여포 2017. 9. 18. 05:30


조건

1. 방명록 형식으로 만들기

2. 버튼을 누르면 이름과 글이 업데이트

3. 다시 실행할때 전에 썼던 글 불러오기


소스코드


public class Han extends Frame{

public Han() {

setSize(600, 800);

setResizable(false);

setLocation(200, 200);

setLayout(null);


init();


addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

Label textLb;

Label nameLb;

TextArea textTf;

TextArea nameTf;

Button submitBt;

Label textListTitle;

Label nameListTitle;

JLabel textListContent;

JLabel nameListContent;

ArrayList<String> textArr = new ArrayList<>();

ArrayList<String> nameArr = new ArrayList<>();

public void init(){

textLb = new Label("글쓰기");

textLb.setSize(50, 50);

textLb.setLocation(20, 50);

add(textLb);


nameLb = new Label("이름");

nameLb.setSize(50, 50);

nameLb.setLocation(20, 200);

add(nameLb);


textTf = new TextArea();

textTf.setSize(300, 80);

textTf.setLocation(80, 50);

add(textTf);


nameTf = new TextArea();

nameTf.setSize(300, 80);

nameTf.setLocation(80, 200);

add(nameTf);


submitBt = new Button("확인");

submitBt.setSize(50, 50);

submitBt.setLocation(500, 70);

add(submitBt);


textListTitle = new Label("글");

textListTitle.setSize(50, 50);

textListTitle.setLocation(70, 300);

add(textListTitle);


nameListTitle = new Label("작성자");

nameListTitle.setSize(50, 50);

nameListTitle.setLocation(190, 300);

add(nameListTitle);

textListContent = new JLabel("");

textListContent.setSize(50, 500);

textListContent.setLocation(60, 370);

textListContent.setVerticalAlignment(SwingConstants.TOP);

add(textListContent);


nameListContent = new JLabel("");

nameListContent.setSize(50, 500);

nameListContent.setLocation(180, 370);

nameListContent.setVerticalAlignment(SwingConstants.TOP);

add(nameListContent);

submitBt.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String text= "";

String name = "";

text = textTf.getText();

name = nameTf.getText();

textArr.add(text);

nameArr.add(name);

textTf.setText("");

nameTf.setText("");

show(textListContent, nameListContent); //화면 보여주기

save2();

}

});

load2();

show(textListContent, nameListContent); 

}

private void show(JLabel korListContent, JLabel engListContent){

String totaltext = "";

String totalname = "";

for (int i = 0; i <textArr.size(); i++) {

totaltext += textArr.get(i) +"<br>";

totalname += nameArr.get(i)+ "<br>";

}

korListContent.setText("<html>" + totaltext +"</html>");

engListContent.setText("<html>" + totalname +"</html>");

}

private void load2(){

try {

// 한 줄씩 읽기

BufferedReader br = new BufferedReader(new FileReader("d:/text.txt"));

BufferedReader br2 = new BufferedReader(new FileReader("d:/name.txt"));

while (true) {

String line = br.readLine();

String line2 = br2.readLine();

if (line == null || line.length() == 0)

break;

// System.out.println(line);

textArr.add(line);

nameArr.add(line2);

}

br.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private void save2(){

FileWriter fw;

FileWriter fw2;

String data = "";

String data2 = "";

try {

fw = new FileWriter("d:/text.txt");

fw2 = new FileWriter("d:/name.txt");

for (int i = 0; i < textArr.size(); i++) {

data = textArr.get(i)+"\r\n";

data2 = nameArr.get(i)+"\r\n";

fw.write(data);

fw2.write(data2);

}

fw.close();

fw2.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

결과화면

방명록을 만들며 전에 실행을 떄 썼던 글을 저장하고 불러오는 기능을 만들었습니다 try문을 써서 오류날거같은 구문을 지정해주고 버튼을 눌러 텍스트파일에 저장하는 부분이 상당히 까다로웠습니다. 먼저 입력된 글을 저장하고 불러오는 소스를 따로 구현한 후에 정상적으로 전에 쓴글을 불러오는게 가능했었습니다. 

Comments