목록자바 (67)
오늘도 공부
자바로 우선 스노우크래프트 만든 다음 안드로이드로 옮겨보자..내실력에 과연 될까나..==;;
ListDataEvent.CONTENTS_CHANGED /*Type: Interval Added , Index0: 0 , Index1: 0 [First, a, b, c, d] Type: Interval Added , Index0: 5 , Index1: 5 [First, a, b, c, d, Last] Type: Interval Added , Index0: 3 , Index1: 3 [First, a, b, Middle, c, d, Last] Type: Contents Changed , Index0: 0 , Index1: 0 [New First, a, b, Middle, c, d, Last] Type: Contents Changed , Index0: 6 , Index1: 6 [New First, a, b, ..
사용법 : File file = new FileRenamePolicy().rename(new File(원하는 파일명)); ============================================================================== import java.io.File; import java.io.IOException; public class FileRenamePolicy { public File rename(File f) { //File f는 원본 파일 if (createNewFile(f)) return f; //생성된 f가 //확장자가 없는 파일 일때 처리 String name = f.getName(); String body = null; String ext = null;..
Introduction to Object SerializationJava object serialization is used to persist Java objects to a file, database, network, process or any other system. Serialization flattens objects into an ordered, or serialized stream of bytes. The ordered stream of bytes can then be read at a later time, or in another environment, to recreate the original objects. Java serialization does not cannot occur fo..
요즘 며칠동안 공부중인 캔버스 프리드로우 버전입니다영..^^ 1단계 : 그냥 캔버스에 간단한 마우스 이벤트를 통한 프리드로우입니다. 2단계 : 1단계를 해보니 할 때마다 다시 페인트를 해서 번쩍번쩍 거림..쓰레드 구현 필요(우리 수업도 빨리 쓰레드,Db,IO가 나가야 할텐데..벌써 한달이 지났엉..==;) 3단계 : 이걸 DB든 파일이든 직렬화 저장해서 정말 스마트폰에 있는 그림메모처럼 만드는 게 목표. 최종단계 : 이걸 그대로 안드로이드폰에 옮겨봄...ㅋ 암튼 현재 1단계 성공.. 소스첨부하니 참고하실 분 보세요. import java.awt.BasicStroke; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; impo..
음.. 업캐스팅이 처음 들어 보는 단어라고 그러셨는데.. 상속을 알고 있다면 그리고 인터페이스 와 추상 클래스, 매서드 오버라이딩의 개념을 알고 있다면 이미 업캐스팅을 사용하는 겁니다. 아니 이미 업캐스팅은 문장에 만들어져 있습니다 모든 자바는 Objdec 클래스에서 상속받습니다. 명시적으 class A { } 라는게 있다면 이미 묵시적으로 class A extends Object 가 형성되는 거죠. 자 그럼 업태스팅은 무엇인지 알아보죠. 대표적인 구문을 하나 보여드리겠습니다. class A{ public void draw(){ System.out.println(" A번입니다"); } } class B extends A{ public void draw(){ System.out.println("B클래스입니..
출처 : http://cafe.naver.com/javachobostudy.cafe 자바초보스터디. Chapter 10. 내부클래스(inner class) 1. 내부클래스(inner class)란? 내부클래스란, 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기 때문이다. . 한 클래스를 다른 클래스의 내부클래스로 선언하면 두 클래스의 멤버들간에 서로 쉽게 접근할 수 있다는 것과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 얻을 수 있다. .내부클래스의 장점 - 내부클래스에서 외부클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화) [참고]내부 클래스는 JDK1.1버젼 이후..
기본적으로 XML을 파실할 적에 고려해야 할 게 있다. 1.유효성 검사에 필요한 .dtd파일이 있나.. dtd파일 작성은 다음과 같다. book.xml 배우자 자바 25000원 배우자 자바2 2123000원 배우자 자바3 25123000원 그럼 여기서 book.dtd는 다음과 같다. 마지막으로 자바 XML 입,출력 및 기본파싱은 다음과 같다. import javax.xml.parsers.*; import javax.xml.transform.*; import org.w3c.dom.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import java.io.*; public class XmlParseExam { public s..
객체 직렬화(Object Serialization): 송 재승(angel1011@hanmail.net) 자바에서는 자바에서 제공하는 기본적인 데이터 유형 이외에도 여러 객체들을 스트림에 쓰고, 읽을 수 있는 기능을 제공하는데 이것이 바로 객체 직렬화를 통해서 가능하다. 이러한 객체 직렬화 기법은 원격 메소드 호출, 보안 및 암호화 등 실제 프로그래밍 시에 유용하게 사용되어 질 수 있다. 객체 직렬화의 비밀그러면 먼저 객체 직렬화가 어떠한 과정을 거쳐서 이루어 지는지 비밀을 벗겨보도록 하자. 먼저 객체들은 ObjectOutputStream에 의해서 직렬화가 되며, ObjectInputStream에 의해서 직렬화가 해제된다는 사실을 기억하도록 하자. 이러한 일련의 과정을 그림으로 나타내면 다음과 같다. [그..
자바 게임 프로그래밍 강좌 6 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 안녕하세요? 친소맨입니다. 이번 강좌는 소스가 길어서 내용은 별루 안되는 데, 길이만 길군요.. 앞으로도 계속 이런 사태가 벌어질것 같아서 걱정입니 다. 대신 주석을 너무하다 싶을정도로 붙여놓은 소스이므로 참고 하시면 많 은 도움이 될듯 합니다. * 본 문서는 Java Development Kit 1.0.2 를 기준으로 작성되었습니다. * Java Development Kit 1.1.x 버젼을 사용할 경우 일부 소스가 실행이 되지 않을 수 있습니다. 3.1.3 마음대로 움직이는 탱크를 만들어 봅시다. 지금까지 배운 것을 모두 총괄 복습하는 의미에..
자바 게임 프로그래밍 강좌 5 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 안녕하세요? 강좌가 좀 늦었습니다. 주말에는 개인적인 일로 무척 바빴습니 다. 그래서 강좌가 늦어진거죠. 이번 강좌는 스프라이트와 키보드 처리에 관련된 내용입니다. 키보드나 마우스 처리는 JDK1.0.x대와 1.1.x대 에서 차 이가 나는 부분이므로, 테스트는 해보지 않았으나, 문제가 발생할 소지가 다분히 있습니다. 될 수 있으면 자료실에 있는 JDK1.0.2 를 사용 하시는 것 이 좋을 것입니다. 만약에 원인모를 이유로 애플릿이 정상 작동 안된다면, 십중 팔구 JDK1.0.x와 JDK1.1.x의 이벤트 처리방식의 차이 때문일 것입니다 * 본 문..
자바 게임 프로그래밍 강좌 4 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 안녕하세요? 친소맨입니다. 아 벌써 새벽 3시군요.. 괜히 이상한 사이트에 접속했다가, 컴퓨터가 다운되는 바람에 두번씩이나 편집을 하느라, 이 시간 까지 잠도 못자고.. 흑흑.. 이번에는 비트맵 그래픽을 처리하는 방법을 배우게 됩니다. 게임에서 비트 맵 그래픽은 거의 필수라고 할 수 있죠. 이번 절을 보고 나면, 최소한 애플 릿에 그림한장 정도는 띠우실 수 있을 껍니다. :) * 본 문서는 Java Development Kit 1.0.2 를 기준으로 작성되었습니다. * Java Development Kit 1.1.x 버젼을 사용할 경우 일부 소스..
자바 게임 프로그래밍 강좌 3 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 안녕하세요? 두 개 연속 편집 (2 Hit Combo?)의 과업을 달성한 친소맨 입니 다. 꼴은 모니터를 장장 두시간이나 쳐다보고 있었더니, 눈이 아른 아른 거 리는 군요.. @_@ 이번 강좌로 자바 게임 프로그래밍의 1장이 끝났습니다. 이번 강좌까지 만 들어 내게될 각종 소스파일들을 자료실에 업로드 해놓겠습니다. 잘라서 편 집하기 싫으신 분들은 자료실에서 다운로드 받아서 바로 실행해 보세요. * 본 문서는 Java Development Kit 1.0.2 를 기준으로 작성되었습니다. * Java Development Kit 1.1.x 버젼을 사용..
자바 게임 프로그래밍 강좌 2 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 1.3 절을 다 올릴려구 했는데, 너무 길어져서 도저히 안되겠군요. 근데, 혹 시 GIF로 그려놓은 설명용 그림을 쉽게 TEXT로 바꿀 수 있는 방법이 없을까 요? 설명용 그림을 대부분 생략하고 넘어가고, 글의 내용을 바꿔 버리기는 하고 있는데, 꼭 필요한 그림들도 있어서 뺄 수 도 없고... 일일히 그리자 니 너무 노가다틱 하군요.. 저에게 이런 고통을 안겨준 애아범 호진 대삽님이 미울 따름이에요 ... T_T * 본 문서는 Java Development Kit 1.0.2 를 기준으로 작성되었습니다. * Java Development Kit 1..
자바 게임 프로그래밍 강좌 1 하이텔 자바 동호회 김명현 (MadOx@hitel.net)님의 글입니다. 이글은 김명현님의 동의없이 함부로 배포하실 수 없습니다. 안녕하십니까? 친소맨 김명현입니다. 이미 만들어 놓은 문서를 새로 편집하 는것도 장난이 아니군요.. 1 회 분량으로 꽤 많은 내용이 될지 모르겠는데, 다음 부터는 이거보다 더 많아질것 같아서 걱정이네요 :) 잘쓴 문서는 아니지만, 초보자나, 자바 게임프로그래밍에 관심이 있으신 분들에게 도움이 되었으면 좋겠군요... * 본 문서는 Java Development Kit 1.0.2 를 기준으로 작성되었습니다. * Java Development Kit 1.1.x 버젼을 사용할 경우 일부 소스가 실행이 되지 않을 수 있습니다. 1. 기본적인 AWT(Abs..
이거 때문에 한 2,3일 고생했다...아..힘들다..==' ObjectInputStream과 ObjectOutputStream의 생성 위치를 바꿔보시기 바랍니다. 서버 쪽에서 ObjectInputStream, ObjectOutputStream 순으로 생성했다면, 클라이언트 쪽에서는 ObjectOutputStream, ObjectInputStream 순으로 생성해야만 합니다. 역도 성립하구요. 이유는 ObjectInputStream 생성자에서 쌍이 되는 ObjectOutputStream이 생성되어 있지 않다면, block되기 때문입니다
import java.util.Locale; import java.util.Date; import java.util.Calendar; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; public class TestDate { public static void main(String args[]) { int iWeekName; int nMoveDay; int nEndDay; long lCurTime; long lCurTimeTemp; long lDiff; Date curDate; Date curDateTemp; String strCurTime; Calendar cal; GregorianCalendar gcal; SimpleDat..
로그인UI랑 조금 수정된 파일
5번째 만든 내 맘대로 만든 채팅소스...ㅋㅋ
클래스패스와 환경 변수, 그것이 알고 싶다. 김세곤 2001년 4월 17일 서론 초보 자바 프로그래머를 괴롭히는 큰 문제 중에 그놈의 클래스패스는 빠지지 않는다. 클래스패스는 사실 이렇게 하나의 글로 설명하기조차 매우 부끄러운 사소한 것인데, 초보 자바 프로그래머에게는 절대 사소하지 않은 것이 현실이다. 더군다나, 가슴 아프게도 대부분의 자바 관련 서적은 클래스패스에 지면을 할애할 만한 형편도 안되고, 대부분의 저자들이 별것도 아닌 것에 공들여 설명하려 하지 않기 때문에, 당연히 클래스패스에 대해서는 많은 독자들이 제대로 이해하지 못한 채 끙끙댄다. 한편으로는, 이것은 기초를 제대로 다지지 않은 독자들의 책임이 크다. 클래스패스를 잘 설정해서 자바 프로그램을 컴파일하고 실행하는 기술은 자바 언어의 첫번째..
import java.awt.*; import javax.swing.*; public class ComponetSize { JFrame jf = null; public ComponetSize(JFrame jf) { this.jf = jf; } public int[] getCenterLocation() { int[] pos = new int[2]; Dimension dimen = Toolkit.getDefaultToolkit().getScreenSize(); Dimension dimen1 = jf.getSize(); pos[0] = (int) (dimen.getWidth() / 2 - dimen1.getWidth()/2); pos[1] = (int) (dimen.getHeight() / 2 -dimen1...
import java.net.*; import java.io.*; import java.util.*; import java.net.*; public class ChatClientByConsole { static int port = 0; static String host = ""; public ChatClientByConsole(String host,int port) { this.port = port; this.host = host; } public static void main(String[] args) { new ChatClientByConsole("127.0.0.1",10001); Socket sock = null;; PrintWriter pw=null; BufferedReader br=null; B..
import java.net.*; import java.io.*; import java.util.*; public class MultiChatServer { public static void main(String[] args) { try { ServerSocket serverSoc = new ServerSocket(10001); System.out.println("접속을 기다립니다."); HashMap hm = new HashMap(); while(true) { Socket sock = serverSoc.accept(); ChatThread chatthread = new ChatThread(sock,hm); chatthread.start(); } } catch (Exception ex) { System...
import javax.swing.*; import java.awt.*; import java.io.*; import java.net.*; import java.awt.event.*; /* 1.Socket 생성자에 서버의IP와 서버의 동작 포트값을(10001)을 인자로 넣어 생성한다. 소켓이 성공적으로 생성되었다면 서버와 접속이 성공적으로 되었다는 것을 의미한다. 2.생선된 socket으로부터 InputStream 과 OutputStream을 구한다. 3.InputStream 은BufferReader 형식으로 변환하고 OutputStream은 PrintWriter 형식으로 변환한다. 4.키보드로 부터 한줄 씩 입력닫는 BufferReader객체를 생성한다. 5.키보드로부터 한줄을 입력받아 PrintWri..
import javax.swing.*; import java.awt.*; public class ChattingClient { public static void main(String[] args) { CreateChattingUI ccu =new CreateChattingUI(); ccu.setSize(500,500); ccu.pack(); ccu.setVisible(true); } } //채팅방UI 만드는 클래스 class CreateChattingUI extends JFrame { JPanel jp,bottom_jp; BorderLayout bl; JTextArea top_jta,member_jta; JTextField username_jtf,msg_jtf; JButton msgSend_jb; pub..
GUI 를 이루는 기본 요소 네 가지는 각각 컴포넌트, 컨테이너, 레이아웃 관리자, 그리고 그래픽스라는 것을 처음에 언급한 바 있다. 우리는 이미 컴포넌트와 컨테이너에 대해 공부하였으며, 이제부터는 레이아웃 관리자 (Layout Manager) 에 대해 공부하도록 하자. 레이아웃(layout)이란 컴포넌트들을 컨테이너 상에 어떻게 배치할 것인지를 결정하는 것을 말한다. 많은 레이아웃 관리자가 있지만, 대표적인 것들로 다음의 다섯 가지를 들 수 있다. BorderLayout - 동, 서, 남, 북, 중앙으로 배치 FlowLayout - 위에서 아래로, 왼쪽에서 오른쪽으로 배치 GridLayout - 동일 크기를 갖는 격자에 배치 GridBagLayout - 다른 크기를 가질 수 있는 격자에 배치 BoxLa..
1.Socket 생성자에 서버의IP와 서버의 동작 포트값을(10001)을 인자로 넣어 생성한다.소켓이 성공적으로 생성되었다면 서버와 접속이 성공적으로 되었다는 것을 의미한다. 2.생선된 socket으로부터 InputStream 과 OutputStream을 구한다. 3.InputStream 은BufferReader 형식으로 변환하고 OutputStream은 PrintWriter 형식으로 변환한다. 4.키보드로 부터 한줄 씩 입력닫는 BufferReader객체를 생성한다. 5.키보드로부터 한줄을 입력받아 PrintWriter에 있는 Printl()메소드를 이용해서 서버에게 전송한다. 6.서버가 다시 봔환하는 문자열을 BufferReader에 있는 readLine()메소드를 이용해서 읽어 들인다. 읽어들인 문..
import java.io.*; import java.beans.*; import java.awt.*; import java.awt.datatransfer.*; import java.awt.print.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import javax.swing.undo.*; import javax.swing.border.*; public class Jmemo extends JFrame implements ClipboardOwner,ActionListener,Printable,UndoableEditListener { Container content..
