23.04.13

이준영·2023년 4월 13일
0

🍇 원격데이터

데이터베이스

데이터크롤링(스크래핑) - 해당 페이지의 데이터 추출하는 행위 ( 네트워크 이용 )
text(csv)
xml
JSON --> 이런 거로 처리

Open API

공식적으로 제공

공공기관 자료 ( data.go.kr )
구글 ( developers.google.com )
네이버 ( developers.naver.com ), 다음 ...
영화 정보 (www.kobis.or.kr) , https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do <- 오픈API

비공식적 제공 : html 분석



🍇 네트워크

인트라넷 : 사내망
192.168.XXX.XXX ( 아이피 번호 )

라우터(통신사 공유기) : 내부 ( 인트라넷 ) / 외부 ( 인터넷 )

인터넷 : 외부망
그외 ( 아이피 번호 )


🍇 IP(Internet Protocol) - 전세계의 컴퓨터(네트워크 카드)

IPv4 ---확장---> IPv6

(cmd에서 ipconfig/all) -> 이더넷 어댑터 이더넷
-> 물리적 주소 : 네트워크 카드 고유 아이디 ( 지문 ) : 전세계에서 중복될 수 없다.

🍇 네트워크 카드 + 프로그램 (port)

port라는 개념을 통해 프로그램이 개방

외부에서 프로그램 접근시

1. 프로토콜(전송규약)
2. 아이피
3. port
를 알아야 접근 가능


Well Known Port (기본값들은 생략 가능)
프로토콜 : 포트
http : 80/8080
https : 443
mail : 25
mariadb : 3306



🍇 네트워크 명령어

ipconfig // ipconfig/all : 아이피 확인 가능


ping ~~ : ~~ 서버 접근 가능 여부확인 ( 응답 없으면 방화벽 오픈되지 않은 것)


tracert ~~ : 내가 ~~까지 지나가는 경로값 추적 ( 출발지 ~ 목적지 사이 라우터 추적 )

(*) 는 막아놓은 것


netstat -an : 네트워크 상태 및 프로토콜 통계를 보여줌 ( 포트 개방 용도 파악 )




🍇 프로그램간의 역할

클라이언트(요청) <-----네트워크-----> 서버(응답) : C/S
(서버 하나에 여러 클라이언트 묶일 수 있다, 하나 죽으면 끝)

ex>
브라우저와 웹서버(톰캣) 관계
mysql 명령어와 mariadb 서비스 관계

P2P(peer to peer) : 클라이언트 , 서버 역할 동시에 함 -> 블록체인(p2p 통해 만들어짐)
(체인 형식으로 연결됨, 어느 하나가 죽어도 다른 연결 가능)



🍇 java.net 패키지 (InetAddress)

아이피와 이름을 알아내는 클래스

public class Network1 {

	public static void main(String[] args) {
		// IP 정보 <- 도메인, network는 java.net 패키지 사용
		
		try {
			InetAddress inetAddress1 = InetAddress.getByName("www.daum.net");
			System.out.println(inetAddress1.getHostAddress());  --> 아이피 알아냄
			System.out.println(inetAddress1.getHostName());   --> 이름 알아냄
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

naver 같이 아이피 여러개 있는 곳은 배열 사용한다.

			InetAddress[] inetAddresses = InetAddress.getAllByName("www.naver.com");
			for(InetAddress inetaddAddress : inetAddresses) {
				System.out.println(inetaddAddress.getHostAddress());


🍇 URL 정보 가지고 있는 클래스

https - 프로토콜
search.naver.com:437 - 도메인(아이피):포트
search.naver - 경로(파일명)
?sm=tab_hty.top&where=nexearch&query=%ED%95%9C%EC%86%8C%ED%9D%AC&oquery=%E3%85%87%E3%85%87&tqi=ivOOwlprvOsssvtQgMRssssst1w-458169 - 쿼리
쿼리는 키와 값으로 이뤄짐


import java.net.MalformedURLException;
import java.net.URL;

public class Network1 {

	public static void main(String[] args) {
		// IP 정보 <- 도메인, network는 java.net 패키지 사용
		String strUrl = "https://search.naver.com/search.naver?
        where=nexearch&query=%ED%95%9C%EC%86%8C%ED%9D%AC&
        oquery=%E3%85%87%E3%85%87&tqi=ivOOwlprvOsssvtQgMRssssst1w-458169";
		
		//url 클래스화 시키기
		try {
			URL url = new URL(strUrl);
			
			System.out.println(url.getProtocol());  --> protocol 출력
			System.out.println(url.getHost());  --> 도메인 출력
			System.out.println(url.getPort());  --> port 출력
			System.out.println(url.getPath()); --> 경로 출력
			System.out.println(url.getQuery());  --> 쿼리 출력
            
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}



🍇 url 통해 html 문서 접근

url 클래스 --> 웹서버 접근 --> html 읽어옴
(접속은 url로 읽어오는 거는 IO stream으로)

기본

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class Network3 {

	public static void main(String[] args) {
		InputStream is = null;
		
		try {
			URL url = new URL("https://m.daum.net");
			
			is = url.openStream();
			
			int data = 0;
			
			while((data = is.read()) != -1) {
				System.out.print((char) data);
			}
			System.out.println();
		} catch (MalformedURLException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());
		} finally { 
			if(is != null) try { is.close(); } catch(IOException e) {}
		}
	
	}

}


daum의 html 정보 inputStream으로 읽어옴 / 깨지는 건 한글이니까 bufferedReader 사용



bufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class Network5 {

	public static void main(String[] args) {
		BufferedReader br = null;
		
		try {
			URL url = new URL("https://m.daum.net");
			br = new BufferedReader(new InputStreamReader(url.openStream()));
			
			String line = "";
			
			while((line = br.readLine()) != null) {
				System.out.print(line);
			}
			System.out.println();
		} catch (MalformedURLException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());
		} finally { 
			if(br != null) try { br.close(); } catch(IOException e) {}
		}
	
	}

}



🍇 특정 사이트의 특정 부분 html 정보 뽑기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class Network5 {

	public static void main(String[] args) {
		BufferedReader br = null;
		
		try {
			URL url = new URL("https://news.daum.net");
			br = new BufferedReader(new InputStreamReader(url.openStream()));
			
			String line = "";
			
			boolean flag = false;
			
			while((line = br.readLine()) != null) {
				//equals
				//contains, startsWith / endsWith
				//indexOf    --> 이런 것들로 사용 가능
                
				//<ul class="list_newsissue">
				//</ul>
				
				//class="wrap_thumb" data-tiara-layer="article_main"
				//</a>
				if(line.contains("class=\"link_txt\" data-tiara-layer=\"article_main\"")) {  //시작 부분
					flag = true;
				}
				if(line.contains("</a>")) { // 끝 부분
					flag = false;
				}
				
				if(flag) {
				System.out.println(br.readLine().trim());  //한 줄 건너서 읽기.공백제거
				}
			}
			System.out.println();
		} catch (MalformedURLException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());
		} finally { 
			if(br != null) try { br.close(); } catch(IOException e) {}
		}
	
	}

내가 가져오고 싶은 정보의 공통적인 데이터를 찾아서 뽑고 flag로 if문을 걸어서 정보 뽑기.

↓↓↓↓↓



🍇 URLConnection

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Network5 {

	public static void main(String[] args) {
		BufferedReader br = null;
		
		try {
			URLConnection conn = new URL("https://news.daum.net").openConnection();
			br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			
			String line = null;
			
			while((line = br.readLine()) != null) {
				System.out.println(line);
			}
		} catch (MalformedURLException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());
		} finally { 
			if(br != null) try { br.close(); } catch(IOException e) {}
		}
	}
}

🍇 HttpURLConnection : URLConnection 상속받은 것

HttpURLConnection는 코드 상태값을 얻을 수 있다. (에러 코드를 잡아낼 수 있음)


HttpURLConnection conn = (HttpURLConnection)new URL("https://news.daum.net").openConnection();
			
			int responseCode = conn.getResponseCode();
			System.out.println(responseCode);

외 위 코드와 동일작용

url 잘못 입력시 나오는 코드값


조건문 사용하여 처리해줌

HttpURLConnection conn = (HttpURLConnection)new URL("https://news.daum.net").openConnection();
			
			//int responseCode = conn.getResponseCode();
			//System.out.println(responseCode);
			
			if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
				System.out.println(conn.getRequestMethod());
				System.out.println(conn.getResponseMessage());
			}

getRequestMethod = 요청방식 ( get / post 이런 방식들)
getResponseMessage(String) = 메세지 반환
getResponseCode(int) = 코드 반환




🍇 이미지 가져오기

바이트 단위로 가져오기 위해 BufferedInput/OutputStream 사용

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Network7 {

	public static void main(String[] args) {
		
		// bufferedInput/outputstream
		BufferedInputStream bis = null;   <-- 이미지 읽고
		BufferedOutputStream bos = null;    <-- 쓰기(저장)
		
		try {
			HttpURLConnection conn = (HttpURLConnection)new URL("https://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png").openConnection();
		
			bis = new BufferedInputStream(conn.getInputStream());
			bos = new BufferedOutputStream(new FileOutputStream("./daum.png"));
			
			int data = 0;
			
			while((data = bis.read()) != -1) {
				bos.write(data);
			}
			System.out.println("다운로드 완료");
		} catch (MalformedURLException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());
		} finally { 
			if(bos != null) try { bos.close(); } catch(IOException e) {}
			if(bis != null) try { bis.close(); } catch(IOException e) {}
		}
	}
}



버튼 클릭시 textField에 이미지 띄우기

		textField2.setText( new File("").getAbsolutePath().replaceAll( "\\\\", "/" ) + "/" );  <-- 경로 설정 




btn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				BufferedInputStream bis = null;
				BufferedOutputStream bos = null;
				
				try {
					HttpURLConnection conn = 
                    (HttpURLConnection)new URL("https://search.pstatic.net/common/?src=http%3A%2F%2F
                    imgnews.naver.net%2Fimage%2F213%2F2022%2F05%2F03%2F0001215166_001_20220503151503059.
                    jpg&type=a340").openConnection();   <-- 이미지 연결
					
					
					bis = new BufferedInputStream(conn.getInputStream());  <-- 읽어오기
					//bos = new BufferedOutputStream(new FileOutputStream("./sohee.jpg"));
                    <-- 만든 후 주석처리하기
					
					int data = 0;
					
					while((data = bis.read()) != -1) {
						//bos.write(data); <-- 만든 후 주석처리하기
						lbl1.setIcon( new ImageIcon( "./sohee.jpg" ) ); <--라벨에 보이기
					}
					
					
					
				} catch (MalformedURLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (FileNotFoundException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} finally { 
					if(bos != null) try { bos.close(); } catch(IOException e1) {}
					if(bis != null) try { bis.close(); } catch(IOException e1) {}
				}
			}
		});



jsoup

HTML 페이지를 웹브라우저가 사용하는 DOM(Document Object Model) 형식으로 변경

python의 beutifulsoup을 java버전으로 만든 것이 https://jsoup.org/ 사이트다.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JSoup1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String html = "<html>"
					+ "<head><title>First parse</title></head>"
					+ "<body>"
					+ "<p>Parsed HTML into a doc.</p>"
					+ "<p>Parsed HTML into a doc.</p>"
					+ "</body>"
					+ "</html>";
		
		Document doc = Jsoup.parse(html); // DOM 구조로 정렬
		
//		//System.out.println(doc);
//		System.out.println(doc.title()); // 타이틀 출력
//		Elements titles = doc.getElementsByTag("title"); 
//		System.out.println(titles); // html 기능 + 타이틀 출력2
//		System.out.println(titles.text()); // 타이틀 출력2
		
		
		Elements pTags = doc.getElementsByTag("p");
//		System.out.println(pTags);
		
		for(int i = 0; i < pTags.size(); i++) {
			Element pTag = pTags.get(i);
			System.out.println(pTag); // 기능 + 텍스트 출력
			System.out.println(pTag.tagName()); // 기능이름만 출력
			System.out.println(pTag.text()); // 텍스트만 출력
		}
	}

}

id / class 로 정보 가져오기

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JSoup2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String html = "<html>"
					+ "<head><title>First parse</title></head>"
					+ "<body>"
					+ "<p id='i1' class = 'c1'>Parsed HTML into a doc 1.</p>"
					+ "<p id='i2' class = 'c2'>Parsed HTML into a doc 2.</p>"
					+ "<p id='i3' class = 'c1'>Parsed HTML into a doc 3.</p>"
					+ "<p id='i4' class = 'c2'>Parsed HTML into a doc 4.</p>"
					+ "</body>"
					+ "</html>";
		
		Document doc = Jsoup.parse(html); // DOM 구조로 정렬
		
		//Id에 대한 정보 가져옴
		Element pTag = doc.getElementById("i1");
		System.out.println(pTag);
		
		System.out.println();
		
		// class에 대한 정보 가져옴
		Elements pTags = doc.getElementsByClass("c1");
		System.out.println(pTags);
	}
}


select, css로 값 가져오기

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JSoup3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String html = "<html>"
					+ "<head><title>First parse</title></head>"
					+ "<body>"
					+ "<a href = 'https://www.daum.net'>"
					+ "<img class ='c1' src ='./daum.jpg'>"
					+ "<div id = 'i1'>다음바로가기</div>"
					+ "</a>"
					
					+ "<a href = 'https://www.naver.com'>"
					+ "<img class ='c1' src ='./naver.jpg'>"
					+ "<div id = 'i2'>네이버바로가기</div>"
					+ "</a>"
					
					+ "<a href = 'https://www.google.co.kr'>"
					+ "<img class ='c1's src ='./google.jpg'>"
					+ "<div id = 'i3'>구글바로가기</div>"
					+ "</a>"

					+ "</body>"
					+ "</html>";
		
		Document doc = Jsoup.parse(html); // DOM 구조로 정렬
		
		Elements divTags = doc.select("#i1"); // (select) 설정한 아이디 값 읽기
		System.out.println(divTags.text());
	
		Elements imgTags = doc.select("img.c1"); // class의 c1 값 가져오기
		System.out.println((imgTags));
		
		//속성 읽기
		for(Element e : imgTags) { //c1이 여러개이므로 반복문
			System.out.println(e.attr("src"));
		}
        
        //img에서 src가 ㄴjpg로 끝나는 값 가져오기
    	Elements imgTag2 = doc.select("img[src$=jpg]");
		System.out.println(imgTag2);
	}

}


보기 편하게 줄바꿈 적용한것



뉴스 뷰어 만들기 (집가서 보충)

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.border.EtchedBorder;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class NewsView1 extends JFrame {

	private JPanel contentPane;
	private JTextField textField1;
	private JTextField textField2;
	private JTextField textField3;
	private JTextField textField4;
	private JTextField textField5;
	private JTextField textField6;
	private JTextField textField7;
	private JTextField textField8;
	private JTextField textField9;
	private JTextField textField10;
	private JButton mainbtn;

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

	/**
	 * Create the frame.
	 */
	public NewsView1() {
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 800, 600);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		mainbtn = new JButton("실시간 뉴스보기");
		mainbtn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				
				BufferedReader br = null;
				
				try {
					URL url = new URL("https://news.daum.net");
					
					br = new BufferedReader(new InputStreamReader(url.openStream()));
					
					String line = "";
					
					boolean flag = false;
					
					while((line = br.readLine()) != null) {
						
						if(line.contains("class=\"link_txt\" data-tiara-layer=\"article_main\"")) {
							flag = true;
							
						}
						if(line.contains("</a>")) {
							flag = false;
						}
						
						String[] strArr = new String[11];
						
						
						if(flag) {
								if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 1 + "\"")) {
									strArr[1] = br.readLine().trim();
									textField1.setText(strArr[1]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 2 + "\"")) {
									strArr[2] = br.readLine().trim();
									textField2.setText(strArr[2]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 3 + "\"")) {
									strArr[3] = br.readLine().trim();
									textField3.setText(strArr[3]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 4 + "\"")) {
									strArr[4] = br.readLine().trim();
									textField4.setText(strArr[4]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 5 + "\"")) {
									strArr[5] = br.readLine().trim();
									textField5.setText(strArr[5]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 6 + "\"")) {
									strArr[6] = br.readLine().trim();
									textField6.setText(strArr[6]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 7 + "\"")) {
									strArr[7] = br.readLine().trim();
									textField7.setText(strArr[7]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 8 + "\"")) {
									strArr[8] = br.readLine().trim();
									textField8.setText(strArr[8]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 9 + "\"")) {
									strArr[9] = br.readLine().trim();
									textField9.setText(strArr[9]);
								}
								else if(line.contains("data-tiara-type=\"harmony\" data-tiara-ordnum=\"" + 10 + "\"")) {
									strArr[10] = br.readLine().trim();
									textField10.setText(strArr[10]);
								}

							}
						  
						}
				} catch (MalformedURLException e1) {
					System.out.println("[에러] : " + e1.getMessage());
				} catch (IOException e1) {
					System.out.println("[에러] : " + e1.getMessage());
				} finally { 
					if(br != null) try { br.close(); } catch(IOException e1) {}
				}
			}

		});
		mainbtn.setBounds(12, 10, 760, 23);
		contentPane.add(mainbtn);
		
		JPanel panel = new JPanel();
		panel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)), "\uB274\uC2A4 \uBCF4\uAE30", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
		panel.setBounds(12, 78, 761, 375);
		contentPane.add(panel);
		panel.setLayout(null);
		
		textField1 = new JTextField();
		textField1.setText("뉴스 내용");
		textField1.setBounds(6, 18, 564, 21);
		panel.add(textField1);
		textField1.setColumns(10);
		
		JButton btn1 = new JButton("바로가기");
		btn1.setBounds(582, 17, 173, 23);
		panel.add(btn1);
		
		textField2 = new JTextField();
		textField2.setText("뉴스 내용");
		textField2.setBounds(6, 53, 564, 21);
		panel.add(textField2);
		textField2.setColumns(10);
		
		JButton btn2 = new JButton("바로가기");
		btn2.setBounds(582, 52, 173, 23);
		panel.add(btn2);
		
		textField3 = new JTextField();
		textField3.setText("뉴스 내용");
		textField3.setBounds(6, 88, 564, 21);
		panel.add(textField3);
		textField3.setColumns(10);
		
		JButton btn3 = new JButton("바로가기");
		btn3.setBounds(582, 87, 173, 23);
		panel.add(btn3);
		
		textField4 = new JTextField();
		textField4.setText("뉴스 내용");
		textField4.setBounds(6, 123, 564, 21);
		panel.add(textField4);
		textField4.setColumns(10);
		
		JButton btn4 = new JButton("바로가기");
		btn4.setBounds(582, 122, 173, 23);
		panel.add(btn4);
		
		textField5 = new JTextField();
		textField5.setText("뉴스 내용");
		textField5.setBounds(6, 158, 564, 21);
		panel.add(textField5);
		textField5.setColumns(10);
		
		JButton btn5 = new JButton("바로가기");
		btn5.setBounds(582, 157, 173, 23);
		panel.add(btn5);
		
		textField6 = new JTextField();
		textField6.setText("뉴스 내용");
		textField6.setBounds(6, 193, 564, 21);
		panel.add(textField6);
		textField6.setColumns(10);
		
		JButton btn6 = new JButton("바로가기");
		btn6.setBounds(582, 192, 173, 23);
		panel.add(btn6);
		
		textField7 = new JTextField();
		textField7.setText("뉴스 내용");
		textField7.setBounds(6, 228, 564, 21);
		panel.add(textField7);
		textField7.setColumns(10);
		
		JButton btn7 = new JButton("바로가기");
		btn7.setBounds(582, 227, 173, 23);
		panel.add(btn7);
		
		textField8 = new JTextField();
		textField8.setText("뉴스 내용");
		textField8.setBounds(6, 263, 564, 21);
		panel.add(textField8);
		textField8.setColumns(10);
		
		JButton btn8 = new JButton("바로가기");
		btn8.setBounds(582, 262, 173, 23);
		panel.add(btn8);
		
		textField9 = new JTextField();
		textField9.setText("뉴스 내용");
		textField9.setBounds(6, 298, 564, 21);
		panel.add(textField9);
		textField9.setColumns(10);
		
		textField10 = new JTextField();
		textField10.setText("뉴스 내용");
		textField10.setBounds(6, 333, 564, 21);
		panel.add(textField10);
		textField10.setColumns(10);
		
		JButton btn9 = new JButton("바로가기");
		btn9.setBounds(582, 297, 173, 23);
		panel.add(btn9);
		
		JButton btn10 = new JButton("바로가기");
		btn10.setBounds(582, 332, 173, 23);
		panel.add(btn10);		
	}
	
	public class MouseAdapterModel extends MouseAdapter {
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	}
	
}	
profile
끄적끄적

0개의 댓글