반응형

 컨테이너와 배치

u    컨테이너의 이해

Ø      컨테이너는 자신의 영역 안에 다른 컴포넌트를 포함할 있는 컴포넌트를 의미한다.

Ø      컨테이너는 자신만으로는 특별한 동작을 없고, 다른 컴포넌트를 포함할 때만 의미가 있다. 컨테이너 자체도 컴포넌트로 취급되며 다른 컨테이너에 부탁될 있다.

Ø      Panel : 다른 컨테이너에 부착되어 일부 영역을 컨트롤 하는데 많이 사용된다.

Ø      Dialog : 대화창에서 주로 사용되는 컨테이너이다.

Ø      Applet Frame 대표적인 최상위 컨테이너로써 다른 컨테이너를 포함한 바깥쪽 컨테이너를 의미한다.

 

u    컨테이너의 사용

컨테이너

설명

Window

컨테이너

최상위 윈도우를 제공하는 컨테이너, Frame Dialog 컨테이너가 주로 대신 사용됨

메소드 이름

기능

void pack()

배치 관리자를 실행시켜서 포함된 컴포넌트의 배치를 시작하고, 윈도우의 크기를 조절함

void show()

윈도우를 화면에 나타나게 하며 윈도우 중에 가장 맨 상단에 나타나게 한다.

void dispose()

다 사용한 윈도우 리소스를 해제시킨다.

Frame

컨테이너

다른 컨테이너와 마찬가지로 add() 메소드를 사용. 배치 요구.

Frame 클래스 생성 후 setSize() 또는 setBounds() 메소드를 이용해서 크기를 꼭 정해줘야 하며 하부 컴포넌트 배치를 위해 pack() 메소드를 호출하고 마지막으로 setVisible(true) 메소드를 통해 화면에 표시해야 한다.

코드 및 예는 표 하부를 참조할 것

Panel

컨테이너

Applet Frame 클래스가 가장 바깥쪽의 컨테이너 역할을 하는데 반해, Panel 클래스는 컴포넌트들을 그룹별로 모을 때 주로 사용한다. 보통 GUI를 설계할 때 컴포넌트를 독립적으로 Applet Frame에 바로 붙이기 보다는 Panel 클래스에 그룹별로 붙이고 패널 클래스들을 배치하는 경우가 대부분이다.

코드 및 예는 표 하부를 참조할 것

Applet

컨테이너

Applet 클래스는 16장에서 살펴본다.

setSize(), setBounds() 메소드를 해 주어도 원하는 크기대로 웹 브라우저에서 나타나지 않는 경우가 있다. 왜냐면 브라우저의 종류에 따라서 조금씩 차이가 있기 때문에 직접적인 메소드보다는 HTML 태그의 사이즈 부분에 값을 주는 것이 바람직하다.

Dialog

컨테이너

팝업 윈도우의 형태로 메인 윈도우 외에 따로 메시지를 출력하거나, 사용자의 입력을 받을 때 주로 사용되는 컨테이너다.

생성자를 알아보자

형태

기능

Dialog(Frame owner)

Dialog(Dialog owner)

기본 생성자.

Dialog(Dialog owner, String title)

Dialog(Frame owner, String title)

Dialog에 타이틀에 추가

Dialog(Dialog owner, String title, boolean modal)

Dialog(Frame owner, String title, boolean modal)

해당 Dialog를 모달(Modal)로 할 것인지의 여부를 지정함, 모달이란 Dialog가 활성화되어 있을 때는 다른 윈도우를 선택할 수 없는 기능임

Dialog(Frame owner, boolean modal)

상위 컨테이너가 Frame인 경우의 생성자

생성과정

Dialog 클래스 상속 : 상속을 통해서 개발자가 새로운 대화창을 만든다.

super() 를 이용하여 생성자 호출

setVisible() 메소드 호출

코드 및 사용 예는 표 하부를 참조할 것

Ø      Frame 컨테이너 사용

import java.awt.*;

 

public class FrameTest {

       public static void main(String args[]){

             Frame f = new Frame("테스트 프레임");  // 프레임 생성

             Label l = new Label("5 후에 없어지는 프레임");

            

             f.add(l);

             f.setBounds(10, 10, 300, 200); //크기 위치 셋팅

             f.setVisible(true);              // 화면에 나타낸다.

            

             try{

                    Thread.sleep(5*1000);

             }catch(InterruptedException e){}

            

             f.setVisible(false);

            

             f.dispose();               // 자원을 해제한다.

       }

}

<실행결과>

Ø      Panel 컨테이너 사용

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

 

public class PanelTest extends Applet implements ActionListener{

       Panel panel1, panel2;

       Button button1, button2, button3, button4;

      

       public void init(){

             panel1 = new Panel();

             panel2 = new Panel();

            

             panel1.setBackground(Color.red);

             panel2.setBackground(Color.yellow);

            

             add(panel1);

             add(panel2);

            

             button1 = new Button("패널 2 보이기");

             button2 = new Button("패널 2 안보이기");

             button3 = new Button("패널 1 보이기");

             button4 = new Button("패널 1 안보이기");

            

             button1.addActionListener(this);

             button2.addActionListener(this);

             button3.addActionListener(this);

             button4.addActionListener(this);

            

             panel1.add(button1);

             panel1.add(button2);

             panel2.add(button3);

             panel2.add(button4);

       }

      

       // 버튼이 눌리면 actionPerformed() 메소드가 호출된다.

       public void actionPerformed(ActionEvent ae){

             Button b = (Button)ae.getSource();

            

             String label = b.getLabel();

            

             if(label.equals("패널 1 보이기"))

                    panel1.setVisible(true);

             else if(label.equals("패널 1 안보이기"))

                    panel1.setVisible(false);

             else if(label.equals("패널 2 보이기"))

                    panel2.setVisible(true);

             else

                    panel2.setVisible(false);

       }

}

<실행결과>

Ø      Dialog 컨테이너 사용

<Notification.java>

import java.awt.*;

import java.awt.event.*;

 

class Notification extends Dialog implements ActionListener{

      

       String msg;

      

       public Notification(Frame f, String s){

             super(f,"주목",true);

             msg = s;

       }

      

       public void disp(){

             Button b;

            

             add("North", new Label(msg,Label.CENTER));

            

             b = new Button("OK");

             b.addActionListener(this);

            

             Panel p = new Panel();

             p.add(b);

             add("South", p);

             setBackground(Color.gray);

             setSize(160,100);

             setVisible(true);

       }

      

       public void actionPerformed(ActionEvent e){

             dispose();

       }

}

 

<TestDialog.java>

import java.awt.*;

import java.awt.event.*;

 

class TestDialog extends Frame implements ActionListener{

             Notification n;

            

             public TestDialog(){

                           super("다이얼로그를 테스트합니다.");

                          

                           n = new Notification(this,"다이얼로그가 보입니다");

                          

                           Panel p = new Panel();

                           Button b1 = new Button("다이얼로그 열기");

                           b1.addActionListener(this);

                          

                           p.add(b1);

                          

                           add(p);

                          

                           setSize(300,150);

                           setVisible(true);

             }

            

             public void actionPerformed(ActionEvent e){

                           n.disp();

             }

            

             public static void main(String args[]){

                           TestDialog t = new TestDialog();

             }

}

<실행결과>

 

u    배치에 대한 이해

Ø      문제 분석 : GUI에서 화면을 구성하기 위해서는 컴포넌트의 위치를 좌표로 지정해 주었다. 다른 운용체제에서 절대 좌표를 입력하면 다르게 표시되어 원하는 모습이 나오지 않는다. 또한 컨테이너의 사이즈를 재조정하면 안에 들어 있는 컴포넌트의 위치가 제각각 변하기 때문에 배치 개념이 나옴

Ø      문제 해결 : 플랫폼 독립성의 특징을 이용해 컴포넌트의 배치를 배치 관리자(Layout Manager)라는 것을 이용하여 처리하도록 한다. 배치 관리자는 LayoutManager 인터페이스를 반드시 구현하도록 되어 있는데 배치 관리자를 통해 컴포넌트를 영역에 배치한다.

Ø      컨테이너가 배치 관리자에게 컴포넌트를 배치하는 것을 요청하면 컴포넌트 간의 간격이나 컴포넌트의 크기 등의 윈도우 시스템에 종속적인 값을 배치 관리자가 하위 윈도우 시스템에 가장 적합한 값으로 매핑해서 화면에 보여준다.

Ø      디폴트 배치 관리자

컨테이너

배치 관리자

Applet, Panel

FlowLayout

Window, Frame, Dialog

BorderLayout

Ø      자바의 컨테이너가 배치 관리자를 사용하기 위한 절차

① 필요한 배치를 지원하는 배치 관리자 클래스 객체를 생성

② 배치 관리자 클래스를 컴포넌트의 setLayout() 메소드를 이용하여 컨테이너에 설정

③ 이후 add() 메소드로 추가되는 컴포넌트는 설정된 배치 관리자 클래스에

 

u    Flow 레이아웃

Ø      컨테이너에 주어진 컴포넌트를 왼쪽에서 오른쪽으로, 위에서 아래쪽으로 순차적으로 배열한다.

Ø      배치시 주의점은 컴포넌트가 지정한 크기를 무시하고 컴포넌트에 필요한 최소한의 높이와 위치, 간격이 자동적으로 지정되어 배치된다.

Ø      코드는 생략하고 실행결과와 특징변화의 예시를 보자.

<실행결과>

      (기본모습)                 (옆으로 윈도우를 늘렸을 )

 

u    Border 레이아웃

Ø      배치에는 North, East, South, West, Center 이름이 붙어 있다.

Ø      이름은 컴포넌트를 컨테이너에 포함시킬 , 같이 주어지며 이에 의해서 컴포넌트가 포함되는 위치가 정해진다.

Ø      소스 코드 실행 결과

import java.awt.*;

 

public class BorderTest extends Frame{

      

       public static void main(String args[]){

             BorderTest f = new BorderTest();

            

             f.setLayout(new BorderLayout());

            

             f.add("North", new Button("첫번째"));

             f.add("East", new Button("두번째"));

             f.add("West", new Button("세번째"));

             f.add("South", new Button("네번째"));

             f.add("Center", new Button("다섯번째"));

            

             f.setSize(300,300);

             f.setVisible(true);

       }

}

<실행결과>

 

u    Grid 레이아웃

Ø      그리드 레이아웃은 생성할 컬럼수와 라인수를 지정한다.

Ø      레이아웃에서는 배치되는 컴포넌트의 크기와 상관없이 셀의 크기와 고정적이기 때문에 컴포넌트의 사이즈가 완전히 무시된다. 컴포넌트를 추가하면 좌측에서 우측으로, 상단에서 하단의 순서대로 컴포넌트가 추가된다.

Ø      소스 코드 실행 결과

import java.awt.*;

 

public class GridTest extends Frame{

      

       public static void main(String args[]){

             GridTest f = new GridTest();

             

             f.setLayout(new GridLayout(3,2));

            

             f.add("North", new Button("첫번째"));

             f.add("East", new Button("두번째"));

             f.add("West", new Button("세번째"));

             f.add("South", new Button("네번째"));

             f.add("Center", new Button("다섯번째"));

            

             f.setSize(300,300);

             f.setVisible(true);

       }

}

<실행결과>

 

u    Card 레이아웃

Ø      카드를 포개어 놓은 듯한 레이아웃 형태로서 포개 놓으면 위의 카드밖에는 없듯이 배치 관리자를 쓰면 한번에 하나의 컴포넌트밖에는 없다.

Ø      소스 코드 실행결과

import java.awt.*;

import java.awt.event.*;

 

public class CardTest extends Frame implements ActionListener{

            

             CardLayout cl;

            

             public static void main(String args[]){

                           CardTest f = new CardTest();

                           Button b;

                          

                           f.cl = new CardLayout();

                           f.setLayout(f.cl);

                          

                           b = new Button("첫번째");

                           b.addActionListener(f);

                           f.add("1,", b);

                          

                           b = new Button("두번째");

                           b.addActionListener(f);

                           f.add("2,", b);

                          

                           b = new Button("세번째");

                           b.addActionListener(f);

                           f.add("3,", b);

                          

                           b = new Button("네번째");

                           b.addActionListener(f);

                           f.add("4,", b);

                          

                           b = new Button("다섯번째");

                           b.addActionListener(f);

                           f.add("5,", b);

                          

                           f.setSize(300,300);

                           f.setVisible(true);

             }

            

             public void actionPerformed(ActionEvent e){

                           cl.next(this);

             }

}

<실행결과>

 ( 화면)                             ( 화면 클릭 두번째 화면)



 

u    GridBag 레이아웃

Ø      지정된 사이즈를 좌표를 이용해 영역 구분을 해준다.

Ø      소스 코드 실행 결과

import java.awt.*;

import java.util.*;

 

public class GridBagTest extends Panel{

            

             GridBagConstraints c;

            

             public GridBagTest(){

                           GridBagLayout gridbag = new GridBagLayout();

                           setLayout(gridbag);

                           setBackground(Color.red);

                          

                           c = new GridBagConstraints();

                           c.weightx = 1.0;

                           c.weighty = 1.0;

                           c.fill = GridBagConstraints.BOTH;

                          

                           layout(new Button("첫번째"), 0,0,1,2);

                           layout(new Button("두번째"), 2,0,2,1);

                           layout(new Button("세번째"), 1,1,1,1);

                           layout(new Button("네번째"), 2,1,1,1);

             }

            

             public void layout(Component obj, int x, int y, int width, int height){

                           c.gridx = x;

                           c.gridy = y;

                           c.gridwidth = width;

                           c.gridheight = height;

                           add(obj, c);

             }

            

             public static void main(String args[]){

                           Frame test = new Frame();

                           test.setSize(300,300);

                           test.add(new GridBagTest());

                           test.setVisible(true);

             }

}

<실행결과>

출처 : Tong - winshwin님의 + [JAVA/JSP]통

반응형

* Layout Manager


1. FlowLayout : Panel, Applet의 default Layout manager

     - Component를 왼쪽에서 오른쪽으로 배치

     - Default로 component를 Frame의 중앙에 배치

     - Component의 size는 layout maneger가 결정

     - Layout Manager의 Constructor를 이용하면 Manager의 속성을 변경할 수 있다.


     ex) setLayout(new FlowLayout(FlowLayout.RIGHT, 20, 40))

          Component를 오른쪽에 배치하며, 20은 Component간의 좌우 Gap을 지정하며, 40은

          Component간의 상하 Gap을 지정하는 것이다. 단위는 pixel.


2. BorderLayout : Window, Frame의 default manager

     - Component를 East, West, North, South, Center 다섯군데에 배치

     - f.add(bn, BorderLayout.NORTH)    f.add(bn, NORTH)   둘 다 버튼을 북쪽에 배치

     - 위치를 지정하지 않으면 Center에 겹쳐 나타나게 된다.


3. GridLayout

     - 격자를 만들어 그 위에 Component를 배치

     - Component를 추가하면 왼쪽에서 오른쪽으로, 위쪽에서 아래쪽으로 배치

     - Constructor를 통해 격자의 크기 결정가능.


4. CardLayout

     - 여러장의 카드(Panel로 구성)를 겹쳐놓고 필요에 따라 그 카드를 보여줌


5. GridBagLayout

     - GridLayout과 비슷하나 더 복잡

반응형
import java.awt.*;
import java.io.File;
class FrameTest
{
    public static void main(String args[]){
        Frame f = new Frame();
        f.setTitle("Frame Test");
        f.setSize(200,200);
        f.setResizable(false);
 
        Image icon = f.getToolkit().getImage("Photo0007.jpg");
        f.setIconImage(icon);
        f.setVisible(true);
    }
};
반응형
///////////////////////////////////////////////////////////////

java 프레임 타이틀바 없애기..

import javax.swing.*;
import java.awt.*;
public class NoTitleBarFrameTest {
 public static void main(String[] args) {
  JFrame f = new JFrame();
  f.setUndecorated(true);
  f.setSize(300,300);
  f.setVisible(true);
  //JWindow w = new JWindow();
  //w.setSize(300,300);
  //w.setVisible(true);
 }
}

setUndecorated 메소드를 사용해 보세요. 주의점을 setVisible(true) 전에 해야 한다는 것입니다.


또는 JFrame 대신 JWindow를 사용하시던지요. (밑에 주석 처리한 것입니다.)

반응형

풀스크린 윈도우 (FullScreen Window) 만들기

import
 java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FullScreen1 {
  GraphicsDevice device;

  public FullScreen1() {
    GraphicsEnvironment ge = GraphicsEnvironment
        .getLocalGraphicsEnvironment();
    device = ge.getDefaultScreenDevice();
    GraphicsConfiguration gc = device.getDefaultConfiguration();

    try {
      JFrame frame = new JFrame(gc);
      //프레임의 테두리를 없앤다.
      frame.setUndecorated(true);

      JButton button = new JButton("OK");
      button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          device.setFullScreenWindow(null);
          System.exit(0);
        }
      });

      frame.getContentPane().add(button);
      //frame을 스크린에 가득차도록 풀스크린 윈도우로 만듬
      device.setFullScreenWindow(frame);
      frame.setVisible(true);
    } catch (Exception ex) {
      device.setFullScreenWindow(null);
      System.exit(0);
    }
  }
  public static void main(String[] args) {
    new FullScreen1();
  }
}

반응형

-- 해외 --
1. 이클립스 공식 홈페이지

http://www.eclipse.org


2. 이클립스 위키

http://eclipsewiki.swiki.net


-- 국내 --

1. okjsp

http://okjsp.pe.kr


2. 자바스터디

http://www.javastudy.co.kr


3. jlab

http://jlab.net


4. 자바지기

http://javajigi.net


5. 이클립스 관련 자료와 url 이 정리된 사이트

http://jini-club.net/phpwiki/index.php/Java/Eclipse


6. 한국 이클립스 사용자 모임

http://eclipsians.net

반응형

자바 뉴스그룹/Java Community

  comp.lang.java.programmer

  국내

  han.comp.lang.java

  Java Lobby (A Java Developers' community)

 

국내 자바 사이트

  JavaCafe.or.kr 사이트

  yoonforh의 자바 묻고 답하기 게시판

  김덕태 님의 자바 1.1 한글 관련 내용

  한국 자바 개발자 컨퍼런스

  자바 문서 한글화 사이트(자바 문서 한글화에 참여할 뜻있는 분들을

                                    기다리고 있습니다.)

  김필호 님의 자바와 한글 게시판 (유료 자바 게시판이며 유료인만큼

  답변이 신속, 성실하게 올라옵니다.)

  김필호 님의 자바 Q&A 게시판

  강신동 님의 Korea Java Developer Connection

  지니에 흥미를 가지고 있는 그룹

  Whang's Java List Version 2.0

  Java FAQ - Korean Version

  광운대 자바랜드(JavaLand:자바네 동네)

  홍종진 님의    자바의 한글 처리 문제에 관한 리소스

  이경하 님의    자바 페이지

 

자바 온라인 매거진

  JavaWorld - IDG's magazine for the Java community

  Java Developer's Journal

  Javology: Contents

 

자바 리소스 디렉토리

   The Community Resource for Jini™ Technology

   Dr.Dobb's Java

   Java Directory of dmoz-open directory project  

   JavaShareWare.Com

   KPCB: Keiretsu

   Gamelan: Earthweb's Java Directory

   JARS Java Resource Listings

   artima.com - a resource for Java and Jini developers

   Jini Links

 

자바 기술

  Threads/Concurrency

      package util.concurrent (by Doug Lea)

      (Book) Concurrent Programming in Java

   JINI

      The JINI COMMUNITY

      Jan Newmarch's Guide to JINI Technologies(A tutorial)

      지니에 흥미를 가지고 있는 그룹(Jini Korea Interesting Group)

    JNDI

      Java(TM) Naming & Directory Interface (JNDI(TM))

    Internationalization

      Writing Global Programs

    RMI

      rmi-users.logfile by thread

    JNI

      Frequently Asked Questions - JavaTM 2 SDK v1.2 and JNI

    JDBC

     JDBC Frequently Asked Questions

     http://splash.javasoft.com/jdbc/jdbc.drivers.html

     George Reese's Java Pages(JDBC-mSQL 홈페이지)

     The JDBC(tm) database access API.

     MsqlJava(mSQL.class) Home Page

     오러클 JDBC 드라이버 다운로드

    자바 빈즈

      JavaBeans - Component APIs for Java

      Java Beans White Paper자바 빈즈 개발자를 위한 Coffee Grinder

      BeanContext Examples

      BeanContext Development Kit (BcDK) Homepage

      Java 1.2 Unleashed chapter 29 - Glasgow Developments

    자바 컴파일러

      IBM 사의 Jikes 컴파일러

      GCJ, The GNU Compiler fo Java Programming Language

    자바 역컴파일러

      Jad - the fast JAva Decompiler

      IceBreaker : A "Visual" Java decompiler/disassembler

      Mocha, the Java Decompiler

    자바 C 번역기

      Toba: A Java-to-C Translator

    오피스 웨어

       ThinkFree Office(trying to be MS Office compatible)

       로터스 e_Suite

       Download Marimba Software

       Unixoid Shell of Java(자바 셸)

     메일 프로그램

       피카소 메일

     자바 파운데이션 클래스 - Swing

       Java Foundation Classes

       Swing by Matthew Robinson and Pavel Vorobiev -

       Netscape IFC: Overview

       Netscape DevEdge - IFC

       마이크로소프트의 자바 사이트(AFC)

     자바 Plugins

       Java Plug-in Product Homepage

       Java Plug-in 1.2 Software FAQ

       JAVA PLUG-IN SCRIPTING (자바 플러그인을 스크립트와 연동)

     자바 Collections API

       Download JDK 1.1 Collections Package

     Reference objects

       a Javaworld article

       Reference Objects and Garbage Collection

       Package summary of java.lang.ref

       Chapter 9 of Inside the Java 2 VM Garbage Collection

    자바 개발 환경

        시맨텍 까페

        비주얼 까페 팁 페이지

        시맨텍 비주얼 까페

        JBuilder Home page

        썬 자바 워크숍

        넷빈즈

        JDE - Java Development Environment for Emacs

       

        마이크로소프트 (비주얼 J++/C++)

        Visual J++ Web site

        Using MSVC for Java

        Using JDK1.1 in Visual J++

        Microsoft SDK for Java Download

    자바 CGI

       Java CGI HOWTO: Executing a Java CGI Program

       Java CGI HOWTO

    자바 웹 서버/JSP/서블릿

       Jeeves Home Page

       The JSDK-Apache Project

       The JavaServer Pages

       The Jakarta Project(tomcat)
       
Tomcat을 Apache 서버에 연결시키는 HOWTO

       GNUJSP

       allaire 사의 JRun

       Java Servlet API(Sun)

       Hrl's Servlet Express

       New Atalanta Comm.'s ServletExec

       The X- Jeeves Server and Servlets FAQ

    Security

       Frequently Asked Questions - Applet Security

       Signed Applet Example (JDK 1.1.x)

       아래의 빈번한 질문과 답 사이트에 좀더 많은 정보가 있습니다.

    Performance / Benchmark

       Java Performance Tuning

       Jack Shirazi's Java Performance Tuning website

       Java Benchmark

       Volano Report

       Java Versus C/C++ Benchmarks

       Java Memory Management Performance

    자바 버그

       The Unofficial Java Spec Report

    XML 관련

        REC-DOM-Level-1-19981001 Java Language Binding

        Working with XML - The JavaTM Api for XML Parsing (JAXP)

    UML

        OMG UML 1.3 specification

        UML 툴

        플라스틱 소프트웨어(국산)

        Together/J(free whiteboard version avail.)

        Rational Rose

        Argo/UML(free and open source)

 

 자바 튜토리얼

   JDC Training and Tutorials

   Server-side computing with XML, , JDBC, Swing and Servlets

   JRE Usage Example

   Programming in Java - A Tutorial by David Mitchell

   자바 1.1 이벤트 모델 요약 설명

   Java Documentation in Windows Help Format

  ->추천:윈도우 help 형식으로 된 자바 도큐먼트

   yoonforh의 자바 튜토리얼

   Trail Map: The Java Tutorial     추천:자바 공식 튜토리얼

   자바 클라이언트/서버 강의

   Be a Java Master with Examples

   The Java Developer: How Do I?

   Java Table of Contents by Richard G Baldwin

   넷스케이프의 ViewSource

   Enterprise JavaBeans Tutorial

 

자바 빈번한 질문과 답(FAQ)

  SUNSITE's JAVA Frequently Asked Questions

                                (FAQ list of newsgroup comp.lang.java)

   The Java(TM) FAQ  (a good FAQ also published as a book)

   자바 프로그램을 윈도우 NT의 서비스로 만드는 방법

   (1) 링크 모음

   (2) JNI 사용하여 구현한 예

    애플릿 서명 예제 - 자바 홈페이지의 보안 문제 페이지 참고

   (1) JDK 1.1.x의 경우

   (2) JDK 1.2.x의 경우

   넷스케이프 사의 서명 도구 페이지

   VeriSign 사의 객체 서명 FAQ

   익스플로러의 자바 서명(Trust-Based Security for Java)

   익스플로러의 자바 서명 FAQ

   Microsoft Java VM version check

 

자바 공개 소스

   Tim Macinta's Java Swapware

   Metrochat

   LazloFont

   How to access a RS-232 port from Java?

   JavaChat 1.0, a distributed Java applet

   Jim Buzbee's Hershey Font Page

   The Java Cup International Contest Winners Circle

   Simple Java Servers

   Java Distributed TCP/IP Message Handling System

   Radu Sion의 소스

   Rich Burridge Home Page

   Joerg Meissner - priv@te szene - JAVA(CreditRoll.java)

   Typewriter Applet

 

자바 포팅 이슈

   Java-Linux

   jGuru Java on Linux FAQ

   Platforms Supporting Java

   IBM 자바 개발 센터

   IBM's Java-related Technology

   KAFFE - A virtual machine to run Java(tm)* code

   alphaWorks

   OSF Java Program Page

   넷스케이프의 JDK 1.1.x 지원

 

썬의 자바 공식 페이지

   자바 홈페이지

   Documentation Index

   White Papers

   Using HotJava(tm)

   Java(tm) IDL

   Java API Overview

   Java: The Inside story

   Java Coding Conventions(자바 코딩 관례)

   Examples of Using the JDK 1.1 AWT

   Java Platform Debugger Architecture

   JIMI Software Development Kit - a class library for managing

 

자바 스크립트

   JavaScript Developer Central(DevEdge Online)

   JavaScript Documentation

   Microsoft Scripting Technologies(JScript and VBScript)

   WEBFX Javascript Examples

   JavaScript Library

   The JavaScript Index v2.0

   Squatt Java/JavaScript Net-Zine

   About Kyle's JavaScript Navigator Window

오픈지엘 - 오픈지엘 공식 사이트, 생각외로 뉴스가 잘 올라온다.
NeHe Tutorial - OpenGL Tutorial. 내용도 좋지만, 각 플랫폼, 언어별로 구현된 소스가 유용.
OpenGL man page - OpenGL MAN 페이지. 일종의 매뉴얼.
OpenGL Manual - SGI 의 OpenGL 1.2 매뉴얼
GL4Java - 자바를 위한 OpenGL
OpenGL Win32 Tutorial - OpenGL Win32 Toturial
GLUT3 - glut3 소스 및 다운로드.
glut for win32 - Glut for Win32 DLL Download
OpenGL Gamedev - OpenGL Gamedev FAQ & Mailing list
cannon_smash - OpenGL 로 만든 오픈소스 탁구게임
OpenGL FAQ - OpenGL FAQ
OpenGL Reference Manual - 온라인북
OpenGL Programming Guide - 온라인북
OpenGL 수퍼 바이블 - 온라인북
OpenGL 튜토리얼 링크 - OpenGL 튜토리얼 링크
OpenGL 게임개발 FAQ - OpenGL 게임개발 FAQ
GLVelocity - OpenGL 관련 소스 및 뉴스, 토론 등등
DelphiGL - Delphi 로 하는 OpenGL
Yindo - 차세대 웹 애플리케이션
Dip2K's OpenGL - 여러 GL 관련 예제가 있는 국내 OpenGL 관련 사이트
GLScene - OpenGL Solution for Delphi
FLTK - OpenGL 그래픽 유저인터페이스 라이브러리(LGPL)
Quesa - Apple Quick Draw 3D Open-source Implementation
GLdomain - 파티클, 그라비티 등에 관한 튜토리얼
게임튜토리얼 - 오픈지엘 튜토리얼 및 MP3 라이브러리, 쓰레드 예제 등등이 있다.
Delphi3D - 델파이와 OpenGL를 사용한 최신 그래픽 기술에 관한 정보
DirectX Dev - Developer-only Forum
DirectX8 FAQ - Microsoft DirectX 8 개발자 FAQ
DirectX 개발 - DirectX Developer Center (MSDN)
XBOX - Microsoft XBOX
Mr.Snow's column - DirectX8 튜토리얼
Gamedev DirectX - Gamedev.net's DirectX resources
DrunkenHyena - Direct3D 8.0 Tutorial
Meltdown2001 - DirectX Meltdown2001 presentation
ShaderStudio - Vertex/Pixel Shader 를 쉽게 쓸 수 있는 툴.
Pixel/Vertex Shader - 톰스하드웨어의 픽셀/버텍스 쉐이더에 대한 간단한 정리
GDC2002-DirectX - Game Developer's Conference 2002 - MS DirectX Tutorial
STEEL 프로그래밍 리소스 - 200여개의 그래픽 관련 문서 및 튜토리얼 모음
그래픽스문서찾기 - 다운로드는 안되고 문서명만 검색되네.
파일포맷 - 모든 파일 포맷에 대해서.
게임프로그래밍뉴스그룹 - comp.games.development.progrmming.algorithms
GPGStudy.com - Game Programming Gems 스터디 사이트
KGDA - 한국 게임 개발자 협의회
FlipCode - 게임개발관련 뉴스와 자료들
GameDev.Net - game developer network
가마수트라 - game developer webzine.
nVidia Developer - nVidia 사의 개발자 네트워크
ATI Developer - ATI 사의 개발자 네트워크
Matrox Developer - 매트록스 사의 개발자 네트워크
게임-디벨로퍼 - 게임 개발 관련 자료 검색 전용
쿼터니온 - 가마수트라의 쿼터니온 설명
문서들 - 가마수트라의 프로그래밍 관련 문서
gdconf - 게임 디벨로퍼 컨퍼런스
디벨로퍼 코너 - 개발자들이 떠드는 곳
인텔 - 개발자 네트워크 게임부문
게임도큐먼트 - 심형근님의 게임개발 관련 각종 문서들
게임튜토리얼 - 게임관련 튜토리얼, 문서, 토론 등등
씽크존 - 가상 온라인 월드 개발자 네트워크
Genesis3D - 소스가 공개된 게임엔진. 유명.
Jet3D - Genesis3D를 기반으로 하는 차기 버전(소스공개)
타이탄프로젝트 - 퀘이크3의 맵을 읽는 엔진(소스공개)
AfterShock - GPL 퀘이크 렌더러
PolyCount - 퀘이크3/2, 언리얼, 하프라이프 등의 모델데이타.
소스포지의 3D 파운드리 - 소스포지의 공개된 여러 3D 관련 프로젝트 및 컨텐츠
3D Engine List - 3D Engine List - 우와 많다.
DDG Toolkit - Digital Dawn Graphics Toolkit (C++ OpenGL Terrain Toolkit)
OpenFX - 오픈소스 공개 모델러, 렌더러, 애니메이터(게임엔진아님)
FLY3D - FLY3D 게임 엔진. 책도 있음.
Crystal Space - 크리스탈 스페이스-멀티플랫폼 3D 게임 엔진
매직소프트웨어 - 3D Game Engine Design 이라는 책 소스 및 유용한 공개코드
Nevrax - GPL 게임 엔진(AI, 3D, 네트웍 포함. 베이어패치 및 아웃도어용)
OGRE - 객체지향 그래픽 렌더링 엔진(베지어패치 및 퀘이크 렌더러 등)
RadonLabs - Nebula Device 라는 공개엔진. Nomads 라는 게임에 사용.
NeoEngine - 네오엔진. 멀티 플랫폼 LGPL 게임엔진
크리스 헤커 - 크리스 헤커의 게임물리학 및 텍스쳐매핑관련 PDF 문서가 있다.
피터 린드스트롬 - 꽤 읽어봄직한 논문들
UNC GEOM - UNC 의 물리시뮬레이션, 기하학관련 리서치 그룹
casManG's 3D 게임 아트 - 3D 게임관련 모델링 튜토리얼 자료 많다.
ingava - Q3A Prgramming/Modeling Tutorial
Motion - 캐릭터 애니메이션에 관한 자료 및 문서
MathEngine - 실시간 물리엔진, 데모
Art Of Assembly - Art Of Assembly : 어셈블리 책 - 웹에 책 내용 다 있음.
게임인공지능 - 게임관련 인공지능
블랙북 - 마이클 애브래쉬의 블랙북 PDF
게임 모델링 툴 링크 - 모델링 툴, 스키닝 툴, 튜토리얼 및 리소스 링크
Creative - 크리에이티브사의 게임 개발 관련 자료
Amit's Link - Amit's Game Programming Information
리스텍 - 리스텍(lithtech) 게임엔진
NetImmerse - NDL사의 NetImmerse 엔진
Audiere - 오디에르. ogg, wav, mod, s3m 등을 지원하는 오디오 라이브러리(LGPL)
GDZine - 게임 개발자를 위한 웹진
Torque엔진 - Tribes 2 에 쓰였다는 Torque 게임 엔진. 개발자 당 $100 이란다.
HighEnd3D - 하이엔드 쓰리디. 마야, XSI, Shake 커뮤니티
씨쥐링크 - 컴퓨터 그래픽 관련
3D Links - 3D 관련 링크 및 뉴스
디지탈 프로듀서 - 디지털 영상 편집 및 3D 관련 웹진. 공짜 3D 모델도 있음.
아발론.뷰포인트 - 뷰포인트사의 공개 모델링 데이타들이 있는 곳.아발론
디지탈에이젼트 - 실사와 비슷한 3D 캐릭터가 말을 한다.(국내)
모델뱅크 - 뷰포인트사의 모델뱅크-상용
Steven Stahlberg 갤러리 - 여자 3D 캐릭터 죽~인다
3D Artisan - 국내 3D 관련 잡지
드림모션 - 국내 모션캡쳐 장비 회사
OpenEYE - 3DS MAX 사용자 그룹
3D 캐릭터 - 나잘난박사의 이상호님 홈
더-포즈 - Poser 애니메이션을 판다.
포져 - 3D 인체 포즈 및 애니메이션 툴. 훌륭...짝짝짝.
3D필름메이커 - 3D 영상 및 컨텐츠 개발 관련
밀크쉐이프3D - 쉐어웨어 로우 메쉬 에디터, 애니메이터(하프-라이프모델 지원빵빵)
안드로이드월드 - 안드로이드 관련 정보
소다플레이 - 마치 애완동물을 괴롭히는 것 같은...
메타모션 - 실시간 모션캡쳐 시스템
제니류님의 홈 - 마야 3D 케릭터 모델링과 애니메이션
CGLand - 다수의 CG 갤러리 및 링크
Digital Art Zone - Poser Map & Model 파는 곳
Motion Analysis - Motion Analysis : Motion Capture System/Software
Zygote - 상용 3D 모델 데이타
Famous3D - Facial motion-capture 솔루션
3D Artists - 세계적인 3D Artists 들의 작품 감상 및 포럼
소아나라 - 3D 아티스트. 실사와 거의 흡사한 이미지. 국산.
Kludge3D - 3D Modeling Tool (LGPL)
니트정보통신 - FilmBox, Toonz, Vicon 등의 디스트리뷰터
GMAX - 게임 MOD 개발용 gmax (공짜)
HCIKorea - 인간과 컴퓨터 상호작용 연구회
JoyCG - 여러 아티스트들의 3D 작품을 구경하고 싶을 때
KBS 기술연구소 - 방송에 관계된 여러 기술 정보
모캡코리아 - 모션캡쳐관련 서비스
Terragen - 공개용 지형 생성 툴
두모션 - 국산 기계식 모션캡쳐 시스템
Quest3D - 실시간 3D 멀티미디어 툴
소프트 쉐도우 - Michael Herf & Paul Heckbert 의 소프트쉐도우에 관한 페이지
쉐도우 - 쉐도우에 관한 여러가지 자료
Jeff Lander - Jeff Lander의 게임개발관련 문서
리얼타임렌더링 - 리얼타임렌더링책선전 및 각종 링크
Math3D - The 3D Computer Graphics Math Library Homepage
New York Univ. - New York Univ. Media Research Lab
Red3D - Non-photorealistic Rendering Links
쿼터니온 - 쿼터니온링크
SIGGRAPH PROCEEDINGS - ACM Digital Library(SIGGRAPH Proceedings Listing)
WhyQuat - Do you really need quaternion?
Nurbs++ - C++ Nurbs Library
매직소프트웨어링크 - 매직소프트웨어의 그래픽관련 링크
gdconf 2000 - Game Devel. Conf. 2000 procedings
gdconf 2001 - Game Devel. Conf. 2001 procedings
CFXWEB - 데모와 게임 개발에 관한 문서, 소스 및 갤러리
I_COLLIDE - 인터액티브하며 정확한 충돌 감지 라이브러리
ACM JGT - Journal of Graphics Tools
RTRT - RealTime RayTracer
피에르의 링크 - 3D, 수학, 물리관련 각종 링크
GeometricModeling - On-Line Geometric Modeling Notes. 맘에드는 주제들.
Heriot-Watt - Heriot-Watt University Graphics Notes. 설명양호.
미시간주립대 - 미시간주립대 그래픽스 노트. 프레젠테이션
Don Lancaster's Guru's Lair - Cubic Spline Library (PDF 서비스)
Paul Bourke - Curve 및 그래픽스 관련 노트 및 C 소스코드
Journal of Graphics Tools - 실제 현장에 바로 응용할 수 있는 그래픽스 연구
RayTracing - RayTracing Tutorial
TomasMöller - Real Time Rendering 의 저자
CassEveritt - nVidia 사 개발자, Per-Pixel Lighting 관련 연구
DavidBarraff - 현 Pixar (전 CMU). 강체시뮬레이션관련
Jos Stam - Alias|Wavefrot 사 근무. FFT 에 기반한 간단한 Fluid Solver
efg's 링크 - 시뮬레이션과 모델링에 관한 링크모음
그래픽스젬스 - 차례 및 소스 다운로드
BOID - BOID(새들의 무리?) 관련 정보(인공지능)
NatureWizard - 그래픽으로 자연을 표현하기 위한 정보들
오픈넙스 - 공개용 넙스(NURBS) 파일 포맷
Jan Kautz - BRDF, Shadow Bumpmap, Realtime Bumpmap 등등
ColDet - 공개 충돌 검사 라이브러리
University of Leeds - 여러가지 그래픽스 관련 기본적인 튜토리얼.
스탠포드대학 - 컴퓨터 그래픽스를 위한 수학적 방법(웨이블릿, 몬테카를로...)
Water - Rendering and Animation of Liquid
인텔3D 문서 - 인텔의 3D 소프트웨어 개발 관련 문서들
GTS - GNU Triangulated Surface Library
LargeModels - 공짜로 다운받는 무지 큰 3D 모델 파일들.
GDAlgorithm - Game Development Algorithm 메일링 리스트
PocketMovies - PocketMovies
Projectmessiah - Projectmessiah
Anzovin Studio - Anzovin Studio
AtomFilims - AtomFilims
4CSCG - 컴퓨터 그래픽 아트 관련
PepeLand - Daniel Martinez Lara
M. Gleicher 의 홈페이지 - 캐릭터 애니메이션 수업 및 모션 에디팅 논문 자료
캐릭터 애니메이션 강의자료 - 위스콘신
Thalmann - Thalmann's Home
CG KAIST - KAIST COMPUTER GRAPHICS LAB
Motion Editing Lecture - KAIST Motion Editing & Manipulation Class
서울대 그래픽스 랩 - 서울대 대학원 그래픽스 & 미디어 랩
Postech VR lab - 포항공대 VR 랩
H-Anim - Humanoid Animation Working Group
Virtual Humans - ben's Virtual Humans Page
Bio Virtual - 3차원 얼굴 뷰어
모션캡쳐 - 모션캡쳐 리서치
한국생산기술연구원 - 메카트로닉스 연구실(로봇관련정보)
Robotics - Mathematical Methods for Robotics and Vision
Linear Algebra - Computation Methods in Linear Algebra
MotionEditing Web - M.Gleicher 의 모션에디팅 메일링리스트
애니큐브 - 자신의 아바타를 만든다.
Heloli.com - 멋진 일본 캐릭터 애니. 카툰렌더링. 치마펄럭. 머리약간 펄럭.
경사면 걷기 - 경사면에서 걷기동작 생성에 관한 논문
스프링인간 - 플래쉬로 만든 고무줄 꼭두각시
DX8스키닝 - DX8 버텍스 쉐이더에 대한 간단설명 및 스키닝 등에 대한 상세한 설명
게임데브넷 - Character Animation with DirectX 8.0
캐릭터애니관련책 - Programming Dynamic Character Animation
CoderCorner - Pierre Terdiman의 Realtime Cloth, Flexporter, Z-Collide 등등 구경
Advanced Character Physics - Thomas Jakobsen의 GDC 2001 강연자료
ESC - 가상 나이트클럽.
메타휴먼 - 메타휴먼? 재미있는 프로젝트들을 연구하는 그룹.
Cal3D - 공개 캐릭터 엔진
Watt - 3D게임, 실시간렌더링 및 캐릭터 애니 강연자료
Expression - 공개 페이셜 애니메이션 툴킷(TTS, 맥스익스포터, 스크립팅)
LinuxGames - 리눅스게임에 관한 뉴스
리눅스 게임 톰 - 리눅스 게임에 관한 많은 뉴우스들.
OpenAL - Loki 사의 오디오 라이브러리
SDL - 쓸만한 멀티플랫폼 멀티미디어 라이브러리
인드리마 오픈소스 프로젝트 - 인드리마 콘솔을 위한 오픈소스 프로젝트 네트워크
Broodcast2000 - 리눅스시스템을 위한 실시간, 비선형 오디오 비디오 편집기 (소스공개)
Inovation3D - 오픈소스 3D 모델링 툴, 키프레임 애니메이션과 본도 지원(간단하게...)
Linux Game Dev. in GDC2001 - Linux Game Dev. in GDC2001
리눅스3D - 리눅스 3D 게임 뉴스
리눅스 3D (org) - 리눅스 3D 뉴스
LinuxVideo - Linux Video and DVD Project
인드리마 개발자 네트워크 - 리눅스 게임 콘솔 인드리마 개발자 네트워크
g-Matrix - kaswan 님의 게임 프로그래머를 위한 3차원 엔진 만들기
울트라 감자 - 뜨거운 감자 김성수님의 개인 홈 - 3D 의 몇몇 강좌와 게시판이 있슴당.
ALTOZ - 인공생명을 연구하는 (주)오즈 인터미디어의 인공생명팀
허영준씨개인홈 - 캐릭터 애니메이션에 관한 자료
GTC - 성균관대학교 게임 기술 개발 지원 센터
RedPixel - ACE, STL, Lua, OpenGL 등에 대한 정보.
Kano - 실시간그래픽스에 관심있는 일본개발자. GPG 일본판 번역자
Ádám Moravánszky - ShaderX 에 Bump Mapped BRDF Rendering 파트집필
Thomas Jakobsen - Game Engine, Physics, Character Animation, Denmark
Pion - 파연님 개인홈. 게임 개발 및 번역.
Cass Everitte - nVidia 사에서 일하는 카스 에버릿. 몇몇 오픈지엘 예제
Hoppe - 메쉬 최적화 및 기타 유용한 자료들. MS 사 댕김.
Newtype - MaxScript, D3D 등등의 여러 개발관련 정보.
Kaliver - 이주형님 개인홈. ASE Viewer 및 Qu Engine
쥐그라운드 - 게임 그라운드. 게임에 관련된 여러가지 정보들.
브렌더 - 최고의 공개 3D 모델러/애니메이터
demonews - 3D 게임 데모 정보
DPlayer - 댄스 플레이어. 무지 보기 좋다..
게임스팟 - 게임스팝 - 게임관련웹진
게임디벨로퍼코리아 - 게임디벨로퍼지 한국판
뷰포인트 - 뷰포인트사의 웹3D (메타스트림)
iWorld3D - 국내 Web3D 개발업체
와일드 탄젠트 - Web3D, Web Streaming, ....
sumea - 환상적인 자바 3D 영상
WEB3D 콘소시움 - 웹3D 콘소시움
Blaxxun3D - X3D 포맷을 지원하는 자바로 만든 3D 클라이언트
펄스3D - 꽤 괜찮은 캐릭터 애니메이션
슈퍼스케이프 - 워크맨 등의 가전제품에 써먹을만한...질은 별루...
샤우트3D - 자바 기반으로 만들어짐. 툴킷도 제공
사이코어 - Cult3D, CultEffect, PuppetTime 등의 프로덕트
드림스케이프 - 국내 웹3D 관련
GIBLE3D - 국내 웹 3D 뷰어 개발 업체
QEDSoft - 3D 웹 에이전트
오락닷컴 - 실시간 스트리밍 3D 춤 강좌 서비스
디지털에이전트 - 3D 캐릭터가 채팅 내용을 따라 읽어주는 등...
리눅스사랑넷 - 리눅스사용자라면 꼭 가봐야 할 사이트
KLDP - 리눅스사용자라면 꼭 가봐야 할 사이트
리눅스시스템관리 - 리눅스 시스템 관리자를 위한 홈페이지
Debian-KR 메일링 리스트 - 데비안-KR 메일링 리스트 아카이브
Trinux - 디스켓 3장에 들어가는 리눅스
linux-firewall - linux-firewall
certcc.or.kr - 한국정보보호센터
쉘프로그래밍 - 쉘프로그래밍매뉴얼
SAINT - 보안분석툴
securityfocus.com - 보안관련정보
정규표현식설명 - 정규표현식에 대한 설명
Thinkpad Tool - Thinkpad Notebook Linux Configuration Tool
네트워크프로그래밍 - BeeJ's Guide to Network Programming
webalizer - 웹 로그 분석툴
MRTG - 서버 네트워크 통계 프로그램
VirtualPC - 윈도우에서 리눅스를 깔 수 있다는
IBM Linux - 한국 IBM의 리눅스 기술문서 번역 및 자료
Linux C - Linux C 프로그래밍에 관한
헤커되기 - 헤커가 되는 법(에릭.S.레이몬드)
데비안사용자 - 국내 데비안 사용자 그룹
리눅스 가제트 - 리눅스관련 웹진
프렉 - 헤킹관련 웹진
CygWin - GNU + Cygnus + Windows
GNU GPL FAQ - GPL 에 관련된 빈번한 질문과 답
phpBB - PHP, MySQL 로 만드는 커뮤니티. 디자인이 깔끔.
KTUG - Korea TeX Users Group
KLDP 닷넷 - 소스포지와 같은 국내의 오픈소스 프로젝트 서비스 제공
Emacs-KR 홈페이지 - 최고의 에디터인 Emacs 의 사용자 모임
Emacs 설치 - 이맥스 윈도우즈용/유닉스용 설치에 관한...
정재목씨의 Emacs - 정재목씨의 Emacs 관련 페이지
NT Emacs - Windows 95/98/NT 용 Emacs 설명
Elisp Manual - Emacs Lisp Programming
Elisp intro page - Elisp Introduction & link
Elisp Reference - Elisp Reference Manual
VisEmacs - Visual Studio 내장 에디터로 Emacs 를 사용하게 해 줌
Doxygen - C++ 개발 문서화 도구
HeaderDoc - C/C++ 헤더파일을 HTML 로 문서화(펄)
CVS Home - 버젼 컨트롤 시스템
RCS - GNU Revision Control System
CS-RCS - 윈도우용 RCS. 1인용은 공짜
ViewCVS - CVS 레파지터리를 웹상에서 보기
ActiveState - ActivePerl, ActiveTCL 등등
Cetus링크 - 프로그래밍관련 방대한 링크
ZipArchive - C++ Zip 압축 라이브러리(소스동봉, zlib 사용)
zlib - zip 라이브러리
Data Compression Lib - 데이터 압축 관련 정보(인덱스, 링크, 소스)
GNU Win32 - Win32 용 각종 GNU 라이브러리 소스(libjpeg, crypt, freetype, zlib 등등)
루아 - 엘레강트하고, 심플하며, 빠르고, 가벼우며, 확장성이 용이한 스크립트 언어
공개 컴파일러들 - 각종 언어에 대한 공개 컴파일러 목록
CGShaders - C for Graphics. 사용자그룹을 가장한 공식홈
UPX - 실행 프로그램 압축 유틸리티. 여러분의 프로그램이 작아집니다.
oggvorbis - 오그 보비스 플러그인, SDK 및 소스 다운로드
ACM - The ABCs of Writing C++ Classes
Guru of the Week - Guru of the Week
STL - Standard C++ Library Tutorial 한글
STL - Standard C++ Library (SGI)
STL - Visual C++ 의 STL Sample
C++ FAQ - C++ FAQ
MSJ - Microsoft Systems Journal
VC++ STL Reference - VC++ STL Reference
Thinking in C++ - Thinking in C++ 온라인 북
코드 구루 - 코드 샘플이 많은 개발관련 사이트
OpenIL - Open Image Library
Win32ASM - Iczelion's Win32 Assembly Homepage
Priority Que & STL - by Mark Nelson (Dr. Dobb's Journal)
STLPort - 범용, 공개, 오픈소스 STL
데이타 압축 - 데이타 압축 관련 링크 모음
C++ Optimize - C++ 최적화 방법에 대한 내용
STL newbie - STL 초보자를 위한 문서
코드프로젝트 - 다양한 장르의 프로그래밍 강좌
MTL - Matrix Template Library
몇몇책들 - Effective C++, More Effective C++, Design Patterns
CPlusPlus - C++ Tutorial
AssemRef - Assembler Programmer's Reference
공짜 C/C++ 컴파일러들 - 공개 C/C++ 컴파일러들에 대한 상세한 목록
어셈러브 - 국내 어셈블리 관련 홈페이지
C++ Online Books - C++ 관련 공짜 온라인 북 링크
STL Document - RogueWave Software 의 STL 튜토리얼 및 레퍼런스
Blitz++ - 객체지향 공학용 수치계산 라이브러리(C++)
행렬 라이브러리 비교 - C/C++ 용 행렬 라이브러리 비교평가
Math Fun Facts - 수학의 재미있는 사실들
AKROWNE's Home - 수학관련 유용한 정보(책 미러 많다)
Math of DFD - Mathematics of DFD(Discrete Fourier Transform)
그리스문자 읽는법 - 그리스 문자를 읽는 방법
Numerican Recipes in C - Numerican Recipes in C 온라인 북
Mech-World - 기계공학관련(동역학,수치해석) 강의노트 및 관련정보
Forgodot - 미적분학 원격 강의
NetLib - 수학관련 문서 및 소프트웨어 모음집
MathBook - Online Books and Lecture Notes in Mathematics
물리의 이해 - 경상대학교의 물리학 노트. 플래쉬 및 자바애플릿.
수학사랑 - 수학교사들의 연구단체
대한 수학회 - 대한민국 수학 학회.
PlanetMath - Wikipedia+MathWorld+Slashdot
MathWorld - 수학 백과 사전. 방대한 자료 상세한 설명.
GIF math - 각종 수학 식에 대한 GIF 이미지 모음
Physically Based Modeling - (Online Siggraph Course notes)
Rigid-Body Link - Rigid-Body Link
RigidTutorial - Rigid Body Simulation Tutorial
ODE - Open Dynamics Engine, 공개 다관절 강체 동역학 엔진
Gene's RealtyRoad - ODE 로 만든 사람 계단에서 굴러 떨어지기
Dynamo - Dynamic Motion library
3DPhysics - 3D Physics 관련 설명
옥스포드다이나믹스 - 자동차 시뮬레이션 라이브러리. (상용)
BuggyDemo - ODE 를 사용한 3D 자동차 시뮬레이션 데모. 소스 제공
TJ의 리소스 - Thomas Jakobsen의 인터액티브 물리 시뮬레이션 관련 리소스들
하복 - 하복(havok) 물리 엔진(상용)
Math 엔진 - 물리 엔진 까르마(Karma) (상용)
GamePhysics Book - David H. Eberly 의 게임 피직스 북. 아직 출간 안됨.
SOLID - 상용 3D 충돌 라이브러리. 개인사용은 공짜.
OpCode - 삐에르 테디맨의 공개 충돌 라이브러리. RAPID나 SOLID와 비슷한.
반응형

번 호 1  
ERROR Exception in thread "main" java.lang.NoClassDefFoundError: 파일명
발생되는 경우 클래스 파일을 찾을 수 없는 경우
조 언 실행하려는 클래스 파일 이름이 제대로 되어 있는지 확인한다.
또한, CLASSPATH 설정이 제대로 되어 있는지 확인하며 (도스모드에서 set명령어)
만약, 되어있지 않다면 설정한다. (CLASSPATH = jdk1.3/jre/lib/rt.jar; 2-1강좌 참조)
 
번 호 2  
ERROR cannot resolve symbol
symbol : class in(에러가 난 부분)
location : class StackTest(찾으려는 위치)
발생되는 경우 이해할 수 없는 클래스나 메소드, 변수명이 올경우
조 언 보통 이 에러는 철자가 틀렸을 경우에 많이 발생한다. 클래스, 메소드, 변수의 철자를 세심히 확인해 본다.
특히, 철자를 확인할때 대소문자 구분을 확실히 체크한다.(자바는 대소문자를 구별한다.) 그리고 클래스에서 발생할 경우 import를 해주었는지 확인해 봅니다.
 
번 호 3  
ERROR non-static variable 변수이름(or method 메소드이름) cannot br referenced from a static context
발생되는 경우 static 메소드 안에서 static 으로 선언되지 않은 메소드나 변수를 참조(사용)했을 경우.
특히, 메소드의 경우는 인스턴스를 사용하지 않고 static메소드 내에서 바로 선언한 경우.
조 언 static 선언자의 사용여부를 살펴보고 static 메소드 안에 static으로 선언되어지지 않은 메소드나 변수가 있느지 확인해본다.
만약 그런것이 있으면 메소드를 새로 만들어 그쪽에서 선언한다. 단, 인스턴스를 생성해서 불러줘야 한다는 것을 잊지 말아야한다.
 
번 호 4  
ERROR valiable 변수명 might not have been initialized
발생되는 경우 지역변수인 변수명의 변수가 초기화가 되어있지 않았을 경우
조 언 지역변수(메소드 내에서 선언한 변수)를 초기화 하지 않은채 선언했을 경우 발생한다.
멤버 필드가 아닌 경우는 반드시 변수 선언시 초기화를 해주어야 한다.
(멤버 필드는 자바 프로그램 자체에서 자동으로 default값으로 초기화 해준다.)
 
번 호 5  
ERROR class 클래스명 is public, should be declared in a file named 클래스명.java
발생되는 경우 클래스명이 public으로 선언되었는데 파일명과 다를 경우
조 언 public으로 선언된 클래스가 있다면 반드시 그 클래스명과 파일명이 같아야 한다.
클래스명과 파일명의 대소문자 및 철자가 같은지 비교해 본다.
또한, public으로 선언된 클래스가 하나 이상 있는지 찾아본다.(반드시 하나만 있어야한다.)
 
번 호 6  
ERROR push(java.lang.object)[메소드(인자로 받을 수 있는 형)] in java.util.Stack(메소드의 클래스) cannot be applied to (int)[잘못 들어간 형]
발생되는 경우 메소드에서 인자를 받을 때 받을 수 있는 형이 아닌 자료형 또는 클래스형을 사용할 경우
조 언 사용하는 메소드의 API를 참고하여 어떤 형을 인자로 받을 수 있는지 찾아본다.
API를 보지 못할 경우는 각 자료형으로 인자를 직접 바꾸어 본다.
 
번 호 7  
ERROR java.lang.NoSuchMethodError: main
Exception in thread "main"
발생되는 경우 클래스 파일 안에서 main() 메소드를 찾을 수 없는 경우
조 언 자바 애플릿이 아닌 이상 자바 애플리케이션은 반드시 main() 메소드를 사용해야 합니다.
main() 메소드를 빼먹지 않았는지 확인해 보십시요. 또한 public static void main(String[] args) 형식으로 씌어졌는지도 확인해 보십시요.
(main 클래스는 반드시 위와 같은 형식으로 만들어져야 합니다.)
 
번 호 8  
ERROR unreported exception java.io.IOException(Exception명); must be caught or declared to be thrown
발생되는 경우 예외가 발생하는데 예외처리를 해주지 않았을 경우
조 언 예외를 발생하는 메소드 같은 경우는 반드시 예외처리를 해주어야 합니다.
예외를 발생하거나 예외처리를 해야하는 메소드는 API를 확인해 보시면 알 수 있습니다.
그렇지 않다면 컴파일 후 지금처럼 에러가 난 예외를 예외처리해 주시면 됩니다.
또한, 예외를 처리할 때는 메소드 차원에서 throws 예외명을 이용해서 처리할 수 있고
try{} catch{} 구문을 이용해서 직접 처리해 주셔도 됩니다.(예외 강좌를 참고하세요.)
특히, 예외도 클래스이므로 반드시 예외가 들어간 패키지를 import 해주어야 합니다.
 
번 호 9  
ERROR Note : Calculator.java(파일명) uses or overrides a deprecated API.
Note : Recompile with -deprecation for details.
발생되는 경우 JDK 버전이 높아졌거나 보안등의 기타이유로 사용이 deprecated된 메소드를 사용한 경우
조 언 이건 예외라기 보다는 경고 입니다.(실행하면 됩니다.^^)
JDK가 버전이 높아지거나 보안등의 이유에 따라 예전에 만들어졌지만 필요가 없어지거나 대체된 메소드가 생겨났습니다.
그런 메소드를 deprecated 되었다고 하는데 이것은 API상에 나왔있습니다.
또한, 컴파일할때 -deprecation 옵션주면 어떤 메소드가 deprecate됐는지 알수있읍니다.
사용이 중지 됐다고 보기 보다는 사용을 가능하면 하지 않게끔 해주는 거죠.
대치되었거나 버전 업된 메소드를 사용하시면 됩니다.
 
번 호 10  
ERROR MouseEvent(클래스명) should be declared abstract; it does not define mouseDragged(java.awt.event.MouseEvent)[메소드명(메소드가 포함된 클래스)] in MouseEvent(클래스명)
발생되는 경우 implements한 Interface의 모든 메소드를 구현하지 않아서 발생됨
조 언 Interface는 모든 메소드가 선언만 되고 구현되지 않은 추상(abstract) 메소드입니다.
만약 Interface를 implements하려면 implements한 클래스가 Interface에서 선언한 모든 메소드를 구현해 주어야 합니다.
하나라도 빠질 경우 implements한 클래스도 추상 클래스로 보고 에러가 발생합니다.
에러에 구현해 주어야할 메소드명이 나오므로 그곳에 쓰여있는 메소드를 구현해 주면 됩니다.
만약, 그 메소드를 구현해 주었는데 에러가 나면 철자 및 대소문자를 다시 확인해 보십시요.
 
번 호 11  
ERROR incompatible types
found : /null(입력한 자료형)
required : int(요구하는 자료형)
발생되는 경우 입력을 했을때 맞지 않는 자료형이나 클래스형을 입력할 경우
조 언 incompatible 은 '성미가 맞지 않는','모순된' 이라는 뜻을 가진 단어 입니다.
단어뜻 처럼 입력 경우 required 에 나타난 자료형 및 클래스형을 요구하는데
found 에서 나타난 자료형 및 클래스형을 써주어서 입력을 하지 못하게 되어서 발생하는 에러입니다.
found 에 나타난 자료형을 required 에 나타난 자료형으로 변경해 주시면 됩니다.
 
번 호 12  
ERROR package java.servlet(패키지명) does not exist
발생되는 경우 import한 패키지가 존재하지 않을 경우
조 언 import한 패키지가 존재하지 않을 경우에 발생하는 에러입니다.
철자와 대소문자를 먼저 확인하고 CLASSPATH 설정을 확인해 보시기 바랍니다.
또한 그 곳에 패키지가 jar파일로 있는지도 확인해 보셔야 합니다.
(API에 나와있는 패키지는 rt.jar에 다 있습니다.
단 javax가 붙거나 다름으로 시작되는 확장 패키지는 설치해 주어야합니다.(javax.swing 제외))
 
번 호 13  
ERROR java.lang.NullPointerException
Exception in thread "main"(메소드) java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:341)... [에러가 일어난 부분]
발생되는 경우 참조하거나 사용한 클래스 또는 자료형이 초기화 되지 않은 경우
조 언 보통 이것은 awt나 배열 부분에서 자주 발생하는데 초기화를 해주지 않아서 많이 발생합니다.
자바의 변수들은 기본적으로(자동으로 초기화 되는 멤버필드등을 제외하고) 초기화를 요구합니다.
에러에 체크된 부분을 검토해 보시고 초기화를 해주십시요.
 
번 호 14  
ERROR ';'(빠진 부분) expected
발생되는 경우 문법상으로 써야할 것을 쓰지 않은 경우 발생합니다.
조 언 주로 ';'을 안써주시거나 아님 '()'(괄호)를 열기만 하고 닫지 않은 실수를 할 경우 발생합니다.
대부분 이 에러가 발생한 경우는 에러에 나온것을 소스에 추가해 주시면 됩니다.
 
번 호 15  
ERROR unexpected type
required : value(요구하는 타입)
found : class(소스상 써준 타입)
발생되는 경우 써주어야 할 타입이 아닌 잘못된 타입을 써주었을 경우
조 언 unexpected type 에러를 해석하면 '기대하지 않은 타입'이란 뜻을 가지고 있습니다.
즉, 원하는 타입(required)이 아닌데 잘못된 타입(found)을 써준 경우 발생합니다.
에러 체크된 부분의 타입을 required 에서 나타난 타입으로 변경해 주시면 됩니다.
 
번 호 16  
ERROR java.lang.ArrayIndexOutOfBoundsException
at Test.main(Test.java:10)[클래스.메소드(파일명:에러난 위치)]
Exception in thread "main"(예외가 던져진 메소드)
발생되는 경우 배열의 범위를 넘어선 값을 넣었을 경우
조 언 위의 에러는 특이하게 컴파일은 이상없이 되지만 실행을 하면 발생하는 에러입니다.
배열의 범위를 넘어설 경우에 발생하므로 에러난 위치의 배열의 참조 범위를 확인해보시고
선언해둔 배열의 범위에 맞게 조정해 주시면 됩니다.
 
번 호 17  
ERROR illegal start of expression
발생되는 경우 선언자(modifier)를 잘못 집어 넣은 경우
조 언 에러의 단어뜻을 확인해 보면 '표현의 시작이 부적격 합니다.'하고 해석할 수 있습니다.
보통 선언자가 맞지 않거나 쓰일데가 아닌데 선언자를 줄 경우에 많이 발생합니다.
특히 메소드안에서 static 선언자를 쓴 경우에는 직격으로 볼수 있죠.
에러가 난 부분의 선언자를 제거하거나 맞는 것인지 다시 확인해 보십시요.
 
번 호 18  
ERROR java.io.InputStream(클래스) is abstract; cannot be instantiated
발생되는 경우 abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우
조 언 abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우에 발생하는 에러입니다.
왜냐하면, 추상 클래스는 직접 new 명령어를 이용하여 인스턴스화 할수 없기 때문입니다.(객체를 못만든다구요.)
이 경우에는 인스턴스를 다른 방법으로 생성하시면 됩니다.
예를 들어 인스턴스를 반환하는 메소드를 이용한다거나 상속을 통해서 상속받은 클래스의 인스턴스를 만들어
직접 인스턴스를 만드는 효과를 낼수도 있구요. 원하시는 방법으로 바꾸어 보시길...
 
번 호 19  
ERROR local variable name(변수명) is accessed from within inner class; needs to be declared final
발생되는 경우 Local Class의 변수를 final로 선언하지 않은 경우
조 언 Local Class의 변수는 참조변수의 참조값 변동을 방지하기 위하여 final 선언자를 붙여주어야 합니다.
변수에 final 선언자를 붙이면 변수는 값을 변동할 수 없는 상수 처럼 쓰이며
만약 이 값을 참조할 경우 자바는 이 값을 넘기는게 아니라 이 값의 복사본을 참조 값으로 넘기게 됩니다.
그러므로 Local Class에서 참조값 변동없이 변수를 참조할 수 있게 되는 것입니다.
Local Class를 정의해준 곳을 살펴보고 final 선언자를 확실하게 확인하시기 바랍니다.
 
번 호 20  
ERROR inner classes cannot have static declarations
발생되는 경우 내부 클래스 안에서 static 선언자를 쓴 경우
조 언 내부 클래스 안에서는 static 선언자를 쓸수 없습니다.
내부 클래스 안에서 사용된 static 선언자를 제거해 주십시요.
 
번 호 21  
ERROR referenceto List is ambiguous,both class java.util.List(클래스) in java.util(패키지)
and class java.awt.List(클래스) in java.awt(패키지) match
발생되는 경우 클래스 사용시 다른 패키지내에 동일이름의 클래스들이 있어서 참조가 모호할 경우
조 언 예시를 보면 아시겠지만 import 한 패키지중에 같은 이름을 사용하는 클래스를 클래스 이름만으로
생성함으로서 참조가 모호해질 경우 발생하는 에러입니다.
이와 같은 경우는 import를 하나 제거 하거나 아님 java.util.List 이런식으로
직접 그 클래스의 패키지를 같이 써줌으로서 모호성을 제거할수 있습니다.
 
번 호 22  
ERROR m()(메소드명) in B(클래스명) cannot override m()(메소드명) in A(클래스명);
attempting to use incompatiable return type
발생되는 경우 클래스를 상속받고서 메소드를 오버라이드 하고자할때 잘못한 경우
조 언 클래스를 상속받고서 메소드를 오버라이드 할 경우에는 지켜야 하는 규칙이 있습니다.
1. 메소드의 이름이 같아야 합니다.
2. 메소드의 파라미터 개수, 데이터형이 같아야 합니다.
3. 메소드의 리턴형이 같아야 합니다.
4. 상위 메소드와 동일하거나 더 구체적인 Exception을 발생시켜야 합니다.
5. 상위 메소드와 동일하거나 접근범위가 더 넣은 접근 제한자를 사용해야 합니다.

님의 메소드 오버라이드시 위 규칙을 잘 지켰는가를 다시 한번 확인해 보세요.
 
번 호 23  
ERROR getPathBetweenRows(int,int)(메소드) has protected access in javax.swing.jTree(클래스)
발생되는 경우 protected로 선언된 메소드를 상속 없이 직접 불러쓸 경우
조 언 protected로 선언되어 있는 메소드는 상속하거나 같은 package에 있을 때만 쓸 수 있습니다.
상속해서 다시 public 메소드로 값을 받던지 아니면
public 메소드 중에서 비슷한 기능을 하는 메소드가 있는지 찾아서 바꾸어주어야 합니다.
 
번 호 24  
ERROR invalid method declaration; return type required
발생되는 경우 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우
조 언 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우에 발생하는 에러이므로
에러가 발생한 메소드를 확인해보고 리턴 타입을 맞게 적어주어야 합니다.
 
번 호 25  
ERROR Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
발생되는 경우 static으로 선언된 변수중 초기화가 안되어 있는 것이 있는 경우
조 언 static으로 선언된 변수중에 초기화가 안된게 있는 경우에 발생하는 에러이므로
에러가 발생한 변수를 확인해보고 알맞은 초기화를 시켜주거나 변수의 위치를
자동 초기화가 가능한 메소드 밖의 클래스 변수로서 사용하게 합니다.
 
번 호 26  
ERROR Error opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment
발생되는 경우 중복설치 등으로 인해 레지스트리 키값이 잘못되어 있는 경우
조 언 중복설치 등으로 인해 레지스트리 키값이 잘못되어 있는 경우에 발생하는 에러이므로
레지스트리 편집기를 열어서 HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft에
보시면 3개의 키가 있을 겁니다. 그중에서 첫번째 키인 Java 런타임 환경 을 마우스
오른쪽 버튼으로 클릭하여 Java Runtime Environment로 이름을 바꿔주시면 됩니다.
 
번 호 27  
ERROR Error Registry Key 'Sofrware\JavaSofrware\Java Runtime Environment\CurrentVerison'
has value '1.1',but '1.3' is requried.
Error: could not find java.dll
Error: could not find java 2 Runtime Enviroment.
발생되는 경우 중복설치 등으로 인해 레지스트리 키값의 자바 버전이 잘못되어 있는 경우
조 언 중복설치 등으로 인해 레지스트리 키값의 자바 버전이 잘못되어 있는 경우에 발생하는 에러이므로
레지스트리 편집기를 열어서 HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft -> Java Runtime Environment의 Current version의 값을 1.3으로 되어있는지 확인해 주시면 됩니다.
 
번 호 28  
ERROR java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver(드라이버명)
발생되는 경우 JDBC로 데이터 베이스에 연결하는 중 드라이버를 찾지 못할 경우
조 언 JDBC를 연결하는 중에 드라이버를 찾지 못할 경우에 발생하는 에러이므로
각 데이터 베이스에 맞는 드라이버가 제대로 다운로드 되었는지 확인해 보시고
드라이버의 위치가 클래스 패스에 잡혀 있는지 확인해주시면 됩니다.
 
번 호 29  
ERROR Method printIn(java.lang.String)(메소드명) not found in class java.io.PrintStream(클래스명)
발생되는 경우 자신이 사용한 클래스의 메소드가 맞지 않는(=없는)경우
조 언 자신이 사용한 클래스의 메소드가 맞지 않는(=없는) 경우에 발생하는 에러이므로
API를 통해서 사용하고자 하는 클래스와 메소드를 다시 한번 확인해 봅니다.
보통 이경우 메소드의 철자나 대소문자를 잘못 쓴 경우가 많으니 그점을 유심히 살표봅니다.
마지막으로 철자와 대소문자도 맞는다면 메소드의 인자의 객체형을 맞게 주었는지 확인해보면 됩니다.
 


반응형
[JAVA] 배워서 남주기 게시물 [67]건
제목 주제 작성자 내용 [모두보기] [주제입력]
    [공지]
  1. 입력된 주제에 회원님들은 답변(reply)함으로써 알고 있는 지식을 여러 벗들과 공유하게 됩니다.
    주제입력은 운영자만이 할수 있습니다.
    이점 양해해 주시기 바라며, 필요한 주제가 있으면 게시판에 올려 주십시요.. 감사 합니다.
  1. [주제] File class Example.....[운영자 재공]관련정보 추가[reply]
      드라이브명과 특정 디렉토리안의 파일 출력하기.....[2004-02-09] [studyto님 재공] [조회:190]
      파일 다이얼로그 창을 열어 파일 선택하기.....[2004-02-10] [park님 재공] [조회:143]
      특정디렉토리내의 파일목록보기.....[2004-02-12] [park님 재공] [조회:70]

  2. [주제] Applet 응용 프로그램.....[운영자 재공]관련정보 추가[reply]

  3. [주제] Application 응용 예제.....[운영자 재공]관련정보 추가[reply]
      신상정보 입력후 출력하기.....[2004-02-09] [park님 재공] [조회:163]
      문자열 타이핑효과 및 스크롤효과 주기.....[2003-10-27] [park님 재공] [조회:182]

  4. [주제] 자바 개론및 이해.....[운영자 재공]관련정보 추가[reply]
      내부 클래스(method type).....[2004-02-08] [park님 재공] [조회:98]
      접근 제한자.....[2003-10-21] [park님 재공] [조회:118]
      반복문과 제어문.....[2003-10-21] [park님 재공] [조회:71]
      extends 와 implements.....[2003-10-21] [park님 재공] [조회:74]
      자바 개요.....[2003-10-21] [park님 재공] [조회:84]
      애플리케이션의 첫번째 프로그래.....[2003-10-21] [park님 재공] [조회:69]
      배열 선언.....[2003-10-21] [park님 재공] [조회:161]
      데이터형.....[2003-10-21] [parksj님 재공] [조회:63]
      다차원 배열.....[2003-10-21] [parksh님 재공] [조회:65]
      Linux에서 자바 환경 설정하기.....[2003-11-24] [park님 재공] [조회:70]

  5. [주제] 네트워크 제어하기.....[운영자 재공]관련정보 추가[reply]
      InetAddress를 사용하여 IP주소 알아내기.....[2003-10-22] [park님 재공] [조회:26]
      URL 클래스.....[2003-10-23] [park님 재공] [조회:21]

  6. [주제] 이미지처리와 오디오 처리.....[운영자 재공]관련정보 추가[reply]

  7. [주제] 입출력 스트림 제어하기.....[운영자 재공]관련정보 추가[reply]
      한문자 입력후 출력하기.....[2004-02-09] [studyto님 재공] [조회:107]
      한줄 입력 받아 출력하기(한글 정상적 처리).....[2004-02-09] [studyto님 재공] [조회:139]
      입력받은 문자열 파일로 저장하기.....[2004-02-10] [park님 재공] [조회:177]
      파일 스트림을 사용하여 텍스트파일 모두 읽어 들이기.....[2004-02-10] [park님 재공] [조회:130]

  8. [주제] 예외처리와 쓰레드 처리.....[운영자 재공]관련정보 추가[reply]
      쓰레드.....[2003-10-21] [park님 재공] [조회:26]
      예외처리.....[2003-10-21] [park님 재공] [조회:29]

  9. [주제] 그래픽 처리.....[운영자 재공]관련정보 추가[reply]
      마우스를 사용하여 선그리기.....[2004-04-14] [park님 재공] [조회:76]
      마우스를 사용하여 사각형 그리기.....[2004-04-14] [park님 재공] [조회:66]
      마우스로 사각형 그리고 reDraw하기.....[2004-04-14] [park님 재공] [조회:59]
      도형 그리기와 메뉴.....[2004-04-16] [park님 재공] [조회:75]
      그래픽 멤소드.....[2003-10-21] [park님 재공] [조회:38]

  10. [주제] 이벤트종류와 이에 대한 사용법.....[운영자 재공]관련정보 추가[reply]
      MouseMotionListener Sample(마우스 현재 좌표값 출력).....[2004-04-02] [park님 재공] [조회:13]
      이벤트의 종류.....[2003-10-21] [park님 재공] [조회:16]

  11. [주제] AWT 컴포넌트와 Layout관리자 사용하기.....[운영자 재공]관련정보 추가[reply]
      제목표시줄 없는 창 만들기.....[2004-04-08] [park님 재공] [조회:29]
      현재 시스템의 폰트 목록 가져오기.....[2004-11-06] [studyto님 재공] [조회:24]
      Frame에서 Dialog Box 띄우기.....[2003-10-21] [park님 재공] [조회:37]
      Layout 관리자.....[2003-10-21] [park님 재공] [조회:32]
      AWT 컴포넌트.....[2003-10-23] [park님 재공] [조회:38]

  12. [주제] Swing 콤포넌트 제어하기.....[운영자 재공]관련정보 추가[reply]
      JTree.....[2005-02-01] [park님 재공] [조회:18]
      현재 윈도우의 전체 크기에 맞게 프레임 만들기.....[2005-02-13] [studyto님 재공] [조회:26]
      파일 필터링하기(FIleFilter).....[2005-02-25] [park님 재공] [조회:18]
      JScrollPane 스크롤바 자동으로 맨 아래로 이동 시키기.....[2005-03-02] [studyto님 재공] [조회:24]

  13. [주제] JDBC 사용하기.....[운영자 재공]관련정보 추가[reply]
      Record Select.....[2004-04-27] [park님 재공] [조회:61]
      테이블의 필드명 알아내기.....[2005-03-04] [studyto님 재공] [조회:65]

  14. [주제] Applet에서 DB Access하기.....[운영자 재공]관련정보 추가[reply]
      Applet에서 DB연결.....[2003-10-21] [park님 재공] [조회:30]

  15. [주제] 문자열 함수.....[운영자 재공]관련정보 추가[reply]

  16. [주제] Socket 사용하기.....[운영자 재공]관련정보 추가[reply]
      소켓을 활용한 실시간 메시지 전달 서비스.....[2003-12-03] [park님 재공] [조회:49]
      소켓을 사용한 간단한 채팅.....[2003-12-05] [park님 재공] [조회:48]
      클라이언트의 현재 마우스 좌표 송출(서버).....[2004-04-07] [park님 재공] [조회:28]
      클라이언트의 현재 마우스 좌표 송출(클라이언트).....[2004-04-07] [park님 재공] [조회:29]
      가장 간단한 소켓 서버와 클라이언트.....[2003-11-27] [park님 재공] [조회:42]

  17. vector 사용하기.....[운영자 재공]관련정보 추가[reply]

  18. (Tip)자바에서 함수는 어떤 방법으로 호출하나.....[운영자 재공]관련정보 추가[reply]

  19. 메뉴만들기.....[운영자 재공]관련정보 추가[reply]
      메뉴바 만들기(하위메뉴 포함).....[2004-04-14] [park님 재공] [조회:69]
반응형

1 메뉴 사용하기


자바 Swing 에서 메뉴를 사용하기 위해서는 3개의 클래스가 필요하다


javax.swing.JMenu 클래스

javax.swing.JMenuBar 클래스

javax.swing.JMenuItem 클래스


JMenuBar 클래스는 JMenu 를 담아두는 클래스로 꼭 한개 필요하다

JMenu 클래스는 JMenuBar 에 추가되어 각종 메뉴를 구성하는데

예를 들자면 지금 사용하고 있는 Explorer 의 파일(F) 편집(E) 등등이 각각 하나의 메뉴이다

JMenuItem 은 메뉴에 추가되어 사용되는 클래스로 Explorer 의 파일(F) 메뉴 내의

새로 만들기, 열기 등등을 지칭한다..


사용법은 JMenuBar 를 생성하고 여기에 add() 메소드로 각각 생성된 JMenu 를 더하고

JMenu 의 add() 메소드로 각각의 JMenuItem 클래스를 더하면 된다.

마지막으로 setJMenuBar() 메서드를 통해 JFrame 클래스에 메뉴바를 더하면 된다


// 각종 필드 선언

    private JMenu jFile;
    private JMenuBar jMenuBar;
    private JMenuItem jOpen;


// 각종 필드 생성

    jMenuBar = new JMenuBar();
    jFile = new JMenu("File");
    jOpen  = new JMenuItem("Open");


// 실제 더하기

    jFile.add(jOpen);
    jMenuBar.add(jFile);

    setJMenuBar(jMenuBar);



이벤트는 메뉴 아이템 객체에 addActionListener(); 메서드를 통해서 주면 된다


이렇게 말이다..




2. 파일 다이얼로그 사용하기


javax.swing.JFileChooser 클래스를 사용하면 된다.


    File file;
   
    JFileChooser fc = new JFileChooser();
    int returnVal = fc.showOpenDialog(this);

    if (returnVal == JFileChooser.APPROVE_OPTION)
    {
            file = fc.getSelectedFile();
    }


위 소스 처럼 간단이 사용하면 되는데

선택된 파일 정보는 file 필드내에 저장되어 있다

궁금하다면 if 내에 System.out.println(file.getName()); 메서드를 확인하면 된다.


다이얼 로그는 아래 사진처럼 열리게 된다.




옵션으로 필터도 줄 수 있는데 자세한 사항은 스킵하자


그럼 위 두개를 사용하여 File 메뉴에 Open 을 클릭하면 파일 다이얼 로그가 열리게

만든 소스를 만들었다

제일 위부분 다운 받는 곳에서 다운 받아서 확인하자..

+ Recent posts