티스토리 뷰

 

연락처 프로그램 Ver.0.5

1. 이름 , 전화번호 , 이메일을 입력하고 "등록" 버튼을 누르면 로그 화면(textAreaLog)에 

등록된 연락처 개수 : 1개 

등록을 완료했습니다!

 

2. 번호입력에 번호를 입력하고 "검색"을 누르면 검색 및 전체결과 출력 화면(textAreaInfo)에 

--- 연락처 1 ---

Contact [name = 김이름 , phone = 010-1111-1111, email = kimname@test.com]

3. 이름, 전화번호, 이메일 을 수정하고 "수정 "버튼을 누르면 검색 및 전체결과 출력 화면(textAreaInfo)에는 

Contact [name = 김이름 , phone = 010-2222-2222, email = kimname@test.com]

로그 화면(textAreaLog)에는 

수정 완료!

4. 번호를 입력하고 "삭제" 버튼을 누르면 삭제하고 로그화면에

삭제되었습니다!

옆에 스크롤에서 보거나 전체 검색으로 확인할 수 있음

 

+ 추가 : 테이블로 전체 검색을 할 수 있게 함 

 

 

 

 

 

내 코드 

 

package edu.java.contact05;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;

import edu.java.contact04.ContactVO;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;

public class ContactMain5 {

	private JFrame frame;
	private JTextField textName;
	private JTextField textPhone;
	private JTextField textEmail;
	private JTextField textIndex;
	private JTextArea textAreaInfo;
	private JTextArea textAreaLog;
	
	private static ArrayList<Contact> list = new ArrayList<>(); //연락처를 담을 list 생성
	
	private int count = 0; //연락처의 개수
	
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ContactMain5 window = new ContactMain5();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public ContactMain5() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 540, 632);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("연락처 프로그램 ver 0.5");
		lblNewLabel.setFont(new Font("나눔고딕", Font.PLAIN, 30));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(12, 10, 500, 48);
		frame.getContentPane().add(lblNewLabel);
		
		JLabel lblName = new JLabel("이름");
		lblName.setHorizontalAlignment(SwingConstants.CENTER);
		lblName.setFont(new Font("나눔고딕", Font.BOLD, 25));
		lblName.setBounds(12, 68, 159, 48);
		frame.getContentPane().add(lblName);
		
		JLabel lblPhone = new JLabel("연락처");
		lblPhone.setHorizontalAlignment(SwingConstants.CENTER);
		lblPhone.setFont(new Font("나눔고딕", Font.BOLD, 25));
		lblPhone.setBounds(12, 139, 159, 48);
		frame.getContentPane().add(lblPhone);
		
		JLabel lblEmail = new JLabel("이메일");
		lblEmail.setHorizontalAlignment(SwingConstants.CENTER);
		lblEmail.setFont(new Font("나눔고딕", Font.BOLD, 25));
		lblEmail.setBounds(12, 197, 159, 56);
		frame.getContentPane().add(lblEmail);
		
		textName = new JTextField();
		textName.setBounds(200, 68, 273, 48);
		frame.getContentPane().add(textName);
		textName.setColumns(10);
		
		textPhone = new JTextField();
		textPhone.setBounds(200, 140, 273, 48);
		frame.getContentPane().add(textPhone);
		textPhone.setColumns(10);
		
		textEmail = new JTextField();
		textEmail.setBounds(200, 207, 273, 48);
		frame.getContentPane().add(textEmail);
		textEmail.setColumns(10);
		
		JButton btnInsert = new JButton("등록");
		btnInsert.setFont(new Font("맑은 고딕", Font.BOLD, 20));
		btnInsert.setBounds(12, 279, 122, 48);
		btnInsert.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String name = textName.getText();
				String phone = textPhone.getText();
				String email = textEmail.getText();
				
				Contact ct = new Contact(name, phone, email); //여기서 리스트로 받아야하지 않을까
				
				
				count++;
				
				String msg = "등록된 연락처 개수 : " + count + "\n"
							+ "등록을 완료했습니다!" + "\n";
				
				textAreaLog.append(msg); 
				
				System.out.println("출력하기");
			}
		});
		frame.getContentPane().add(btnInsert);
		
		textIndex = new JTextField();
		textIndex.setHorizontalAlignment(SwingConstants.CENTER);
		textIndex.setBounds(152, 279, 122, 48);
		frame.getContentPane().add(textIndex);
		textIndex.setColumns(10);
		
		
		JButton btnSearch = new JButton("검색");
		btnSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String name = textName.getText();
				String phone = textPhone.getText();
				String email = textEmail.getText();
				
				Contact ct = new Contact(name, phone, email); 
				
				String index = textIndex.getText();
				
				int num = Integer.parseInt(index); 
				
				String msg1 = "--- 연락처 " + num + "---" + "\n"  //입력한 숫자를 읽어와서
							+ ct.toString() + "\n"; //해당 인덱스를 출력해야하는데
				
				textAreaInfo.append(msg1);
							
			}
		});
		btnSearch.setFont(new Font("맑은 고딕", Font.BOLD, 20));
		btnSearch.setBounds(290, 278, 122, 48);
		frame.getContentPane().add(btnSearch);
		
		JButton btnUpdate = new JButton("수정");
		btnUpdate.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String name = textName.getText();
				String phone = textPhone.getText();
				String email = textEmail.getText();
				
				Contact ct = new Contact(name, phone, email); 
				
				String msg2 = ct.toString();
				
				textAreaLog.append("수정 완료!");
				textAreaInfo.append(msg2);
			}
		});
		btnUpdate.setFont(new Font("맑은 고딕", Font.BOLD, 20));
		btnUpdate.setBounds(12, 337, 122, 48);
		frame.getContentPane().add(btnUpdate);
		
		JButton btnDelete = new JButton("삭제");   // 삭제 기능은 입력한 인덱스를 삭제하기 => 리스트 만들고
		btnDelete.setFont(new Font("맑은 고딕", Font.BOLD, 20));
		btnDelete.setBounds(152, 337, 122, 48);
		frame.getContentPane().add(btnDelete);
		
		JButton btnAllSearch = new JButton("전체 검색");
		btnAllSearch.setFont(new Font("맑은 고딕", Font.BOLD, 20));
		btnAllSearch.setBounds(290, 338, 122, 47);
		frame.getContentPane().add(btnAllSearch);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 395, 400, 72);
		frame.getContentPane().add(scrollPane);
		
		textAreaInfo = new JTextArea(); // textAreaInfo 초기화
		scrollPane.setViewportView(textAreaInfo);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(12, 487, 400, 78);
		frame.getContentPane().add(scrollPane_1);
		
		textAreaLog = new JTextArea();  // textAreaLog 초기화
		scrollPane_1.setViewportView(textAreaLog);
	}
}

 

 

 

 

 


 

 

 

 

 

GUI 09

 

 

 

 

 

 Design > Components > JCheckBox

 

 

 

 

 

아래 코드에서 독서 체크박스(chckbxReading)를 선택하면 setEnabled(false)가 호출되어

버튼(btnOutput)이 비활성화된다. 이것은 일종의 동작 제어이다.

즉, 사용자가 "독서"를 선택하는 경우 버튼(btnOutput)을 비활성화하여 사용자가 버튼을 클릭할 수 없도록 한다.

 

JCheckBox chckbxReading = new JCheckBox("독서");
		chckbxReading.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(chckbxReading.isSelected()) { // 독서 체크박스를 선택하면
					btnOutput.setEnabled(false);
				} else {
					btnOutput.setEnabled(true);
				}
			}
		});
		chckbxReading.setBounds(235, 6, 115, 23);
		frame.getContentPane().add(chckbxReading);

 

 

 

 

btnOutput = new JButton("출력");
		btnOutput.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String result = "음악 : " + chckbxMusic.isSelected() + "\n"
						+ "영화 : " + chckbxMovie.isSelected() + "\n"
						+ "독서 : " + chckbxReading.isSelected() + "\n";
				
				textArea.setText(result);
			}
		});
		btnOutput.setBounds(358, 6, 97, 23);
		frame.getContentPane().add(btnOutput)

 

 

 

 

 

GUI10

 

 

 

 

 

전체 코드 

 

 

 

package edu.java.gui10;

import java.awt.EventQueue;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.event.ActionEvent;

public class GuiMain10 {

	private JFrame frame;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GuiMain10 window = new GuiMain10();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public GuiMain10() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JMenuBar menuBar = new JMenuBar();
		frame.setJMenuBar(menuBar);
		
		JMenu mnFile = new JMenu("File");
		menuBar.add(mnFile);
		
		JMenuItem mntmOpen = new JMenuItem("Open");
		mntmOpen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//JFileChooser : 파일을 선택할 수 있는 팝업창
				System.out.println("클릭");
				JFileChooser chooser = new JFileChooser();
				int result = chooser.showOpenDialog(null); 
				System.out.println(result);
				if(result == JFileChooser.APPROVE_OPTION) { // 확인 버튼 클릭
					System.out.println("파일선택");
					File selected = chooser.getSelectedFile();
					System.out.println(selected.getAbsolutePath());
				}else { //취소 버튼을 누르면 
					System.out.println("취소");
				}
			}
		});
		mnFile.add(mntmOpen);
		
		JMenu mntmSave = new JMenu("Save");
		mnFile.add(mntmSave);
		
		JSeparator separator = new JSeparator();
		mnFile.add(separator);
		
		JMenuItem mntmExit = new JMenuItem("Exit");
		mntmExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// ConfirmDialog : 
				// Yes(확인) - No(아니오) - Cancel(취소) 버튼을 갖는 다이얼로그
				int result = 
						JOptionPane.showConfirmDialog(frame.getContentPane(), "종료하시겠습니까?"); 
						// parentComponent : 부모컴퍼넌트를 설정. 현재 컴퍼넌트의 보여줄 위치를 설정한다.
				System.out.println("선택 결과 : " + result);
				if(result == JOptionPane.YES_OPTION) {
					// 프로그램 종료 :
					// System.exit(0); 정상 종료
					// System.exit(0 이외의 숫자); 비정상 종료
					System.exit(0);
				} else {
					System.out.println("취소");
				}
				
			}
		});
		mnFile.add(mntmExit);
		
		JMenu mnHelp = new JMenu("Help");
		menuBar.add(mnHelp);
		
		JMenuItem mntmAbout = new JMenuItem("About");
		mntmAbout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 매시지와 Ok버튼만 있는 다이얼로그 : MessageDialog
				JOptionPane.showMessageDialog(frame, "버전 1.0");
			}
		});
		mnHelp.add(mntmAbout);
	}

}

 

 

 

 

GUI 11

 

 

 

New Frame을 선택하면 frame이 새로 생성

 

 

New Dialog 를 선택하면

 

 

 

 

GuiMain11

 

package edu.java.gui11;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class GuiMain11 {

	private JFrame frame;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GuiMain11 window = new GuiMain11();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	
	public GuiMain11() {
		initialize();
	}

	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		JButton btn1 = new JButton("New Frame");
		btn1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
//				JFrame myFrame = new JFrame(); 
//				myFrame.setBounds(10, 10, 400, 400);
//				System.out.println("프레임 생성");
//				myFrame.setVisible(true);
				
				// 일반적으로 새로운 프레임이나, 다이얼로그를 생성할 때는
				// 각 클래스들을 상속받는 자식 클래스를 만들어서 사용하는 것이 
				// 편의성 면에서 더 좋음
				
				MyFrame myFrame = new MyFrame();
				myFrame.setVisible(true);
//				frame.setVisible(false); // 메인 프레임을 안보이게
			}
		});
		btn1.setFont(new Font("맑은 고딕", Font.BOLD, 30));
		btn1.setBounds(12, 10, 410, 82);
		frame.getContentPane().add(btn1);
		
		JButton btn2 = new JButton("New Dialog");
		btn2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MyDialog myDialog = new MyDialog();
				myDialog.setVisible(true);
				
			}
		});
		btn2.setFont(new Font("맑은 고딕", Font.BOLD, 30));
		btn2.setBounds(12, 108, 410, 82);
		frame.getContentPane().add(btn2);
	}
}

 

MyDialog

 

package edu.java.gui11;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class MyDialog extends JDialog {

	private final JPanel contentPanel = new JPanel();


	public MyDialog() {
		setBounds(100, 100, 450, 300);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setLayout(new FlowLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane, BorderLayout.SOUTH);
			{
				JButton okButton = new JButton("OK");
				okButton.setActionCommand("OK");
				buttonPane.add(okButton);
				getRootPane().setDefaultButton(okButton);
			}
			{
				JButton cancelButton = new JButton("Cancel");
				cancelButton.setActionCommand("Cancel");
				buttonPane.add(cancelButton);
			}
		}
	}

}

 

 

MyFrame

 

 

package edu.java.gui11;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

public class MyFrame extends JFrame {
  
	// 하나의 package에 two Main은 존재할 수 없다. 
	
	private JPanel contentPane;


	public MyFrame() {
		
		// JFrame.EXIT_ON_CLOSE : 프로그램 전체 종료
		// JFrame.DISPOSE_ON_CLOSE : 현재 창만 종료
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel(); // => frame.getContentPane() 과 동일
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JButton btnNewButton = new JButton("New button");
		contentPane.add(btnNewButton, BorderLayout.CENTER);
	}

}

 

 

 

 

 

GUI12

 

 

 

 

 

 

GuiMain12

 

package edu.java.gui12;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class GuiMain12 {

	private JFrame frame;
	private JTextField textField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GuiMain12 window = new GuiMain12();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public GuiMain12() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		textField = new JTextField();
		textField.setBounds(156, 38, 116, 21);
		frame.getContentPane().add(textField);
		textField.setColumns(10);
		
		JButton btnNewButton = new JButton("New button");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String text = textField.getText();
				MyFrame myFrame = new MyFrame(text);
				myFrame.setVisible(true);
			}
		});
		btnNewButton.setBounds(167, 100, 97, 23);
		frame.getContentPane().add(btnNewButton);
	}
}

 

 

MyFrame

 

 

package edu.java.gui12;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

public class MyFrame extends JFrame {
  
	// 하나의 package에 two Main은 존재할 수 없다. 
	
	private JPanel contentPane;

	

	public MyFrame(String text) {
		
		// JFrame.EXIT_ON_CLOSE : 프로그램 전체 종료
		// JFrame.DISPOSE_ON_CLOSE : 현재 창만 종료
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel(); // => frame.getContentPane() 과 동일
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JButton btnNewButton = new JButton(text);
		contentPane.add(btnNewButton, BorderLayout.CENTER);
	}

}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함