게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 기능코드와 gui를 어떻게 결합하는지 몰라서 그런데 도와주실분..
게시물ID : programmer_22929짧은주소 복사하기
작성자 : Tadogom
추천 : 0
조회수 : 1531회
댓글수 : 1개
등록시간 : 2019/06/01 16:13:06
옵션
  • 베스트금지
  • 베오베금지
[code]

package eun; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
//수정 다이얼로그 1번째------------------------------------------------- 
class suDialog extends JDialog{ 
  JPanel p = new JPanel(); 
  JLabel la = new JLabel("수정할 ID : "); 
  JTextField tf = new JTextField(); 
  JButton ok1 = new JButton("수정"); 
  JButton ok2 = new JButton("취소"); 
  suDialog(JFrame frame, String title){ 
    super(frame,title,true); //모델다이얼로그 
    this.add(p); 
    p.setLayout(null); 
    p.add(la); 
    la.setBounds(5,-5,80,50); 
    p.add(tf); 
    tf.setBounds(70,6,180,28); 
    p.add(ok1); 
    ok1.setBounds(125,125,60,30); 
    p.add(ok2); 
    ok2.setBounds(190,125,60,30); 
    this.setSize(270,200); 
    ok1.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        // TODO Auto-generated method stub 
        suDialog2 di = new suDialog2(null, "수정"); 
        di.setVisible(true); 
     } 
  }); 
  ok2.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      dispose(); 
   } 
}); 


//수정 다이얼로그 1번째------------------------------------------------- 
//수정다이얼로그 2번째-------------------------------------------------- 
class suDialog2 extends JDialog{ 
  JPanel p = new JPanel(); 
  JLabel la1 = new JLabel("ID : "); 
  JLabel la2 = new JLabel("이름 : "); 
  JLabel la3 = new JLabel("성적 : "); 
  JTextField tf1 = new JTextField(); 
  JTextField tf2 = new JTextField(); 
  JTextField tf3 = new JTextField(); 
  JButton ok1 = new JButton("수정완료"); 
  JButton ok2 = new JButton("취소"); 
  suDialog2(JFrame frame, String title){ 
    super(frame,title,true); //모델다이얼로그 
    this.add(p); 
    p.setLayout(null); 
    p.add(la1); //ID 
    la1.setBounds(25,-5,80,50); 
    p.add(tf1); 
    tf1.setBounds(50,5,200,28); 
    p.add(la2); 
    la2.setBounds(10,28,80,50); 
    p.add(tf2); 
    tf2.setBounds(50,40,200,28); 
    p.add(la3); 
    la3.setBounds(10,60,80,50); 
    p.add(tf3); 
    tf3.setBounds(50,72,200,28); 
    p.add(ok1); 
    ok1.setBounds(90,105,95,30); 
    p.add(ok2); 
    ok2.setBounds(190,105,60,30); 
    this.setSize(270,180); 
    ok2.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        // TODO Auto-generated method stub 
        dispose(); 
     } 
  }); 


//수정다이얼로그 2번째-------------------------------------------------- 
//삭제 다이얼로그------------------------------------------------------------ 
class rmDialog extends JDialog{ 
  JPanel p = new JPanel(); 
  JLabel la = new JLabel("삭제할 ID : "); 
  JTextField tf = new JTextField(); 
  JButton ok1 = new JButton("삭제"); 
  JButton ok2 = new JButton("취소"); 
  rmDialog(JFrame frame, String title){ 
    super(frame,title,true); //모델다이얼로그 
    this.add(p); 
    p.setLayout(null); 
    p.add(la); 
    la.setBounds(5,10,70,20); 
    p.add(tf); 
    tf.setBounds(70,8,160,25); 
    p.add(ok1); 
    ok1.setBounds(100, 40, 60, 30); 
    p.add(ok2); 
    ok2.setBounds(167, 40, 60, 30); 
    this.setSize(250,120); 
    ok2.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
        // TODO Auto-generated method stub 
        dispose(); 
     } 
  }); 


//--------------------------------------------------------------------- 
public class eun extends JFrame { 
  JPanel p = new JPanel(); 
  JLabel la1 = new JLabel("     ID : "); 
  JLabel la2 = new JLabel("이름 : "); 
  JLabel la3 = new JLabel("성적 : ");  
  JTextField tx1 = new JTextField(); //아이디 텍스트필드 
  JTextField tx2 = new JTextField(); //이름 텍스트필드 
  JTextField tx3 = new JTextField(); //성적 텍스트필드 
  JTextArea tx4 = new JTextArea(); //빈공간 텍스트에어리어 
  JButton btn1 = new JButton("등록"); 
  JButton btn2 = new JButton("수정"); 
  JButton btn3 = new JButton("삭제"); 
  JButton btn4 = new JButton("저장"); 
  JButton btn5 = new JButton("불러오기"); 
  JButton btn6 = new JButton("종료"); 
  JButton btn7 = new JButton("전체보기"); 
  suDialog sm = new suDialog(this,"수정"); //수정 다이얼로그 
  suDialog2 sm2 = new suDialog2(this,"수정"); //수정 다이얼로그 2번째 
  rmDialog rm = new rmDialog(this,"삭제"); //삭제 다이얼로그 
  eun(){ 
    this.setTitle("학생관리시스템"); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.formDesign(); 
    this.eventHandler(); 
    this.setSize(550,250); 
    this.setVisible(true); 
 } 
 //setbound (가로위치, 세로위치, 폭, 높이) , 폼디자인 
 public void formDesign() { 
   this.add(p); 
   p.setLayout(null); 
   p.add(la1); 
   la1.setBounds(4,0,40,40); 
   p.add(tx1); 
   tx1.setBounds(45,7,35,25);  
   p.add(la2); 
   la2.setBounds(4,15,40,70); 
   p.add(tx2); 
   tx2.setBounds(45,38,35,25);  
   p.add(la3); 
   la3.setBounds(4,30,50,100); 
   p.add(tx3); 
   tx3.setBounds(45,68,35,25); 
   p.add(tx4); 
   tx4.setText("ID를 입력해주세요"); 
   tx4.setBounds(80,38,450,120);  
   p.add(btn1); 
   btn1.setBounds(100,160,60,30); 
   p.add(btn2); 
   btn2.setBounds(165,160,60,30); 
   p.add(btn3); 
   btn3.setBounds(230,160,60,30); 
   p.add(btn4); 
   btn4.setBounds(295,160,60,30); 
   p.add(btn5); 
   btn5.setBounds(360,160,90,30); 
   p.add(btn6); 
   btn6.setBounds(455,160,60,30); 
   p.add(btn7); 
   btn7.setBounds(85,10,90,25); 

public void eventHandler(){ 
  //수정 이벤트----------------------------------------------------- 
  btn2.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      sm.setVisible(true); 
   } 
}); 
//수정 이벤트----------------------------------------------------- 
//삭제 이벤트------------------------------------------------------ 
btn3.addActionListener(new ActionListener(){ 
  @Override 
  public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 
    rm.setVisible(true); 
 } 
}); 
//삭제 이벤트------------------------------------------------------ 
//종료 이벤트------------------------------------------------------- 
btn6.addActionListener(new ActionListener(){ 
  @Override 
  public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 
    System.exit(0); 
 } 
}); 
}  
//종료 이벤트 ------------------------------------------------------- 
public static void main(String[] args) { 
  new eun(); 



[/code]
===============================================위 코드가 GUI 코드


[code]

package si; 
public class Student { 
  private String id; //학생ID 
  private String name; //학생 이름 
  private int score; //학생 성적 
  public String getId() { 
    return id; 
 } 
 public void setId(String id) { 
   this.id = id; 

public String getName() { 
  return name; 

public void setName(String name) { 
  this.name = name; 

public int getScore() { 
  return score; 

public void setScore(int score) { 
  this.score = score; 

public Student(String id, String name, int score) { 
  // TODO Auto-generated constructor stub 
  this.id = id; 
  this.name = name; 
  this.score = score; 

public String toString(){ 
  return id +":" +name+":" + score; 

public boolean equals(Student stu){ 
  boolean result = false; 
  if(id.equals(stu.id)){ 
    return true; 
 } 
 return result; 


====================================== Student 코드

package si; 
import java.util.Arrays; 
public class StudentDAO { 
  Student[] list;         //학생 리스트 
  private int cnt;        //등록된 학생수 
  public StudentDAO(){ 
    list = new Student[100];  //학생을 100명 만듦 
 } 
 //학생 데이터 등록 메소드 
 public boolean add(Student stu, boolean ins) { 
   // TODO Auto-generated method stub 
   if(cnt >list.length -1){ 
     System.out.println("더이상 등록할 수 없습니다."); 
     return false; 
  } 
  //id가 이미 존재하면 등록 안함 
  for(int i = 0; i < cnt; i++){ 
    if(stu.equals(list[i])& !ins){ 
      System.out.println("등록된 id 입니다"); 
      return false; 
   } 

list[cnt++] = stu; 
return true; 

public Student[] getList() { 
  return list; 

public void setList(Student[] list) { 
  this.list = list; 

public int getCnt() { 
  return cnt; 

public void setCnt(int cnt) { 
  this.cnt = cnt; 

//학생 데이터 수정 메소드 
public void update(Student new_stu, int i) { 
  // TODO Auto-generated method stub 
  list[i] = new_stu; 

//등록된 학생 ID 삭제 
public void delete(int i) { 
  list[i] = null; 
  for(int j = 0; j < cnt; j++){ 
    list[i] = list[j + 1]; 
 } 
 cnt--; 

//list = 학생리스트 , cng = 등록된 학생수 
//compareTo 두 이름 비교 
//a와 b가 같으면 0을 반환 a가 더크면 양수, b가더크면 음수 
public void sortId(){ 
  // TODO Auto-generated method stub 
  Arrays.sort(list, 0, cnt, (a,b)-> b.getId().compareTo(a.getId())); 

public void sortName(){ 
  // TODO Auto-generated method stub 
  Arrays.sort(list, 0, cnt, (a,b)-> b.getName().compareTo(a.getName())); 

public void sortScore() { 
  // TODO Auto-generated method stub 
  Arrays.sort(list, 0, cnt, (a, b) -> b.getScore() - a.getScore()); 



[/code]

=======================================학생관련 코드

[code]

package si; 
import java.awt.List; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.OutputStreamWriter; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Scanner; 
public class StudentUI { 
  private Scanner scan; 
  private StudentDAO dao; 
  private Student[] temp; 
  public StudentUI(){ 
    scan = new Scanner(System.in); 
    dao = new StudentDAO(); 
    temp = dao.list; 
 } 
 private void showUsage() throws IOException { 
   // TODO Auto-generated method stub 
   boolean bFlag = true; 
   while(true){ 
     System.out.println("==사용 방법=="); 
     System.out.println("1.등록 2.조회 3.수정 4.삭제 5.종료 6.검색 7.정렬 8.저장"); 
     String menu = scan.nextLine(); 
     if(menu.equals("5") == true){ 
       System.out.println("5. 종료"); 
       bFlag = false; 
       return; 
    } 
    else{ 
      getInput(menu); 
   } 


//사용자 입력받기 
public void getInput(String strMenu) throws IOException{ 
  if(strMenu.equals("1")){ 
    System.out.println("1. 등록"); 
    System.out.print("학생ID를 입력하세요."); 
    String id = scan.nextLine(); 
    System.out.print("학생 이름을 입력하세요."); 
    String name = scan.nextLine(); 
    System.out.print("자바 성적을 입력하세요."); 
    int score = scan.nextInt(); 
    Student stu = new Student(id, name, score); 
    if(dao.add(stu, false)) 
    System.out.println("등록이 완성되었습니다."); 
 } 
 else if(strMenu.equals("2")){ 
   System.out.println("2. 조회"); 
   for(int i = 0; i< dao.getCnt(); i++){ 
     System.out.println("ID : " + temp[i].getId() + "이름 :" + temp[i].getName()+ "성적 :" +temp[i].getScore()); 
  } 

else if(strMenu.equals("3") == true){ 
  System.out.println("3. 수정"); 
  String id = scan.nextLine(); 
  for(int i = 0; i < dao.getCnt(); i++){ 
    System.out.print("ID : "); 
    String new_id = scan.nextLine(); 
    System.out.print("이름 : "); 
    String new_name = scan.nextLine(); 
    System.out.print("자바 성적"); 
    int new_score = scan.nextInt(); 
    Student new_stu = new Student(new_id,new_name,new_score); 
    dao.update(new_stu, i); 
    System.out.println("수정이 완료됨"); 
 } 

else if(strMenu.equals("4")){ 
  System.out.println("4. 삭제할 ID를 입력하세요."); 
  String del_id = scan.nextLine(); 
  int tempIndex = 0; 
  for(int i = 0; i<dao.getCnt(); i++){ 
    if(del_id.equals(temp[i].getId())){ 
      tempIndex = i; 
   } 

dao.delete(tempIndex); 
System.out.println("등록된 ID가 삭제 되었습니다."); 

else if(strMenu.equals("6")){ 
  System.out.println("6. 검색할 ID 또는 이름을 입력하세요."); 
  String find_name = scan.nextLine(); 
  for(int i = 0; i< dao.getCnt(); i++){ 
    if(find_name.equals(temp[i].getId())){ 
      System.out.println("ID : " + temp[i].getId() + "이름 :" + temp[i].getName()); 
   } 
   else if(find_name.equals(temp[i].getName())){ 
     System.out.println("이름 :" + temp[i].getName()+ "ID :" + temp[i].getId()); 
  } 


//dao.list는 학생의 수  , dao.cnt 등록된 학생수 
//temp = dao.list 
else if(strMenu.equals("7")){ 
  System.out.println("1. 이름순서로 정렬  / 2. 성적순서로 정렬 "); 
  String number = scan.nextLine(); 
  if (number.equals("1")) { 
      dao.sortName(); 
      //dao에서 등록된 학생의 수만큼 반복 2개면 2회를 돌린후 temp(dao의 학생수에서 이름을 가져온다)  
      for(int i = 0; i< dao.getCnt(); i++){ 
      System.out.println("이름 : " +temp[i].getName() + "성적:" + temp[i].getScore()); 
   } 

else if (number.equals("2")) { 
  dao.sortScore(); 
  for(int i = 0; i< dao.getCnt(); i++){ 
    System.out.println("이름 : " +temp[i].getName() + "성적:" + temp[i].getScore()); 
 } 


else if(strMenu.equals("8")) { 
  System.out.println("저장합니다."); 
  try { 
    //ro폴더를 만들고 안에 저장 
    FileOutputStream fos = new FileOutputStream("C:\\ro\\aa.txt"); 
    OutputStreamWriter os = new OutputStreamWriter(fos); 
    for(int i = 0; i< dao.getCnt(); i++){ 
      os.write("ID : " + temp[i].getId()+ "이름 :" + temp[i].getName()+ "성적 :" +temp[i].getScore()); 
      os.write("\r\n"); 
   } 
   System.out.println("저장완료 했습니다."); 
   os.close(); 
   fos.close(); 

catch(Exception e) { 
  e.printStackTrace(); 

try { 
  FileInputStream fis = new FileInputStream("aa.txt"); 
  InputStreamReader ois = new InputStreamReader(fis); 
  ois.close(); 
  fis.close(); 
  }catch(Exception e) { 
  e.printStackTrace(); 



private char[] sortScore() { 
  // TODO Auto-generated method stub 
  return null; 

private char[] sortName() { 
  // TODO Auto-generated method stub 
  return null; 

public static void main(String[] args) throws IOException { 
  StudentUI ui = new StudentUI(); 
  ui.showUsage(); 



[/code]
===============전체적인 등록 삭제 등등 기능을 구현하는 코드 입니다.



혼자 기능을 어떻게 구현해야 할지 몰라서 답답한 관계로 도저히 안되서 질문 올립니다. 

gui디자인도 만들었고 기본적인 기능 구현까진 했는데 버튼을 눌렀을 대 이 기능이 어떤식으로

코드를 넣어야 그 기능이 구현되는지 알고 싶습니다.. 도와주세요 

기능은 scan 이나 nextLine 등 이런걸 넣으면 됐는데 gui와 기능 구현 코드랑 병합 시켜서 버튼을 누르면 출력되게끔 gui에 작동시키고 싶은데 

너무 어려워서 도와주셨으면 좋겠습니다
출처 https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=328272827
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호