class OuterClass {

private static String myName;

private static int num;


OuterClass(String name) {

myName = name;

num = 0;

}


static class StaticInnerClass {

public StaticInnerClass(String name) {

// TODO Auto-generated constructor stub

myName = name;

num = 0;

}


public void inner() {

num++;

System.out.println(myName + " OuterClass " + num);

}


}


class InnerClassTest {

public static void main(String[] args) {

// static

StaticInnerClass staticin1 = new StaticInnerClass("First");

StaticInnerClass staticin2 = new StaticInnerClass("Second");

staticin1.inner();

staticin2.inner();


}

}

블로그 이미지

왕왕왕왕

,

instance inner 클래스 

inner클래스에 외부 클래스 필드를 자유롭게 사용가능하다

외부클래스를 통해 생성해야된다. (new 외부클래스. new inner클래스;)


class OuterClass {

private String myName;

private int num;


OuterClass(String name) {

myName = name;

num = 0;

}


class InnerClass {

InnerClass() {

}


public void inner() {

num++;

System.out.println(myName + " OuterClass " + num);

}

}

}


class InnerClassTest {

public static void main(String[] args) {

// OuterClass.InnerClass in1 = new OuterClass("First").new InnerClass();

// OuterClass.InnerClass in2 = new OuterClass("Second").new InnerClass();

// in1.inner();

// in2.inner();

블로그 이미지

왕왕왕왕

,


//도형 추상클래스 예제

//Area라는 추상클래스가 super 클래스가 됨

//도형별클래스마다 Area를 상속

//Area를 레퍼런스로 각 도형클래스 생성하여 원하는 도형을 출력


public class test {


public static void main(String[] args) {

// TODO Auto-generated method stub

Area parent_Rect = new Rect();

Area parent_Tri = new Tri();

Area parent_Cir = new Cir();


Scanner i = new Scanner(System.in);

System.out.println("1.사각형 2.삼각형 3.원");


int num = i.nextInt();


if (num == 1) {

parent_Rect.disp();

} else if (num == 2) {

parent_Tri.disp();

} else if (num == 3) {

parent_Cir.disp();

} else {

System.out.println("아무것도없음");

}

}

}


abstract class Area {

public abstract void disp();

}


class Rect extends Area {


@Override

public void disp() {

// TODO Auto-generated method stub

System.out.println("사각형");

}

}


class Tri extends Area {


@Override

public void disp() {

// TODO Auto-generated method stub

System.out.println("삼각형");

}

}


class Cir extends Area {


@Override

public void disp() {

// TODO Auto-generated method stub

System.out.println("원");

}

}


추상클래스 


상속을 목적으로 쓴다.

추상메소드는 강제성이있다.

상속받은 클래스에서 추상메소드를 오버라이딩 해줘야 객체생성 할 수 있다.

동적바인딩으로 코드를 짜게되면 간결해질 수 있다.




블로그 이미지

왕왕왕왕

,

//sql 은select * from test

//전체 레코드는 10개이고 컬럼은 6개인 테이블이다.


ResultSet re = stmt.executeQuery(sql);

//메타데이터를 얻고 그 메타데이터에서 컬럼개수를 반환한다.

//컬럼개수 6개 나옴

ResultSetMetaData md = re.getMetaData() ;

int column = md.getColumnCount();


//행의 맨마지막으로가서 Row를 반환하고 다시 처음으로 돌려놓는다.

//레코드 개수 10개 나옴

re.last();

int row = re.getRow(); 

re.beforeFirst();



//이렇게하는이유는 배열을 이용해 데이터를 한번에 가져올때 쓰면좋을거같다.

//동적할당을 위해

블로그 이미지

왕왕왕왕

,


//컬럼명을 만들어준다.

Vector<String> column1 = new Vector<String>();

column1.addElement("제품명");

column1.addElement("제품수량");

column1.addElement("제품가격");

column1.addElement("등록기간");

column1.addElement("유통기한");

//추가한 컬럼명으로 모델 생성하고 인자로 넣어줌

DefaultTableModel model = new DefaultTableModel(column1, 0);


 제품명,제품수량,제품가격,등록기간,유통기한 컬럼을 가진 테이블이 만들어진다.

 0은 비어있는 행을 추가하느냐 마느냐. 1로하면 아무것도 작성되지않은 행이 1개추가되서  테이블생성 필요없어서 0으로함


//이제 데이터를 넣을 거다.

//컬럼이 5개 만들어져서 5개에 데이터를 넣는다. 아무리 더추가해봤자 안들어감


Vector<String> row = new Vector<String>();

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

model.addRow(row);


//추가된 데이터들을 모델에 추가하고 모델을 테이블 인자로 넣어준다.


table = new JTable(model);

scrollPane.setViewportView(table);


//여기까지 하면 1행이 추가되면 컬럼별로 dd라는 데이터를 가지게된다.

//이벤트 발생시마다 추가하고싶다면


//생성을 같은이름으로 생성해주고 

//데이터를 넣고 모델에 추가해주면 바로 2행으로 추가된다.

//아래 코드만 반복적으로 사용하면 실시간으로 테이블에 추가가능 하겠다.

row = new Vector<String>();

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

row.addElement("dd");

model.addRow(row);


JTable에 들어가는 인자로는 TableModel dm이나,

Object[][] rowdata,Object[] columnName,

Vector rowData, Vector columnName,


이외에도 몇개있음 아무튼 이렇게도 테이블 생성할 수 있다는 것만 알고 있으면된다.




1차원과 2차원 배열을 이용해 할 수 도 있지만, 이게더 효율적으로 보인다.

2차원은 아무래도 코드가 지저분해지니까 ㄴㄴ


블로그 이미지

왕왕왕왕

,

텍스트 필드를 JFormattedTextField로 생성


try {

MaskFormatter format = new MaskFormatter("####-##-##");

sheif_Life_TextField = new JFormattedTextField(format);

sheif_Life_TextField.setBounds(100, 55, 116, 21);

stock_contentPane.add(sheif_Life_TextField);

sheif_Life_TextField.setColumns(10);

} catch (ParseException e1) {

// TODO 자동 생성된 catch 블록

e1.printStackTrace();

}


MaskFormatter로 형식을 지정해주고 실행해보면


텍스트필드에 - - 이렇게만적혀있다.


그냥 연도,월,일 순으로 20000101입력한다면


2000-01-01 이렇게 완성된다.


자신이 정한 포맷형식을 벗어나지않는다


2000010101 입력이 안된다는 말이다.



블로그 이미지

왕왕왕왕

,

comboBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

Object a = e.getItem();

textField.setText(String.valueOf(a));

}

});


간단하다. 아이템 변경될때마다 이벤트를 getitem 하면서 텍스트필드에 찍어 볼 수 있다.

블로그 이미지

왕왕왕왕

,

package kkk;


public class InstanceOf {

public static void wrapBox(Box box) {


//box 가 GoldPaperBox로 형변환이 가능하다면 실행

if (box instanceof GoldPaperBox) {

((GoldPaperBox) box).godWrap();


//box 가 PaperBox로 형변환이 가능하다면 실행

} else if (box instanceof PaperBox) {

((PaperBox) box).PaperWrap();


//나머지

} else {

box.simpleWrap();

}

}

public static void main(String[] args) {

Box box1 = new Box();

PaperBox box2 = new PaperBox();

GoldPaperBox box3 = new GoldPaperBox();

wrapBox(box1);

wrapBox(box2);

wrapBox(box3);

}

}


class Box {

public void simpleWrap() {

System.out.println("simple wrap");

}


}


class PaperBox extends Box {

public void PaperWrap() {

System.out.println("paper wrap");

}


}


class GoldPaperBox extends PaperBox {

public void godWrap() {

System.out.println("gold wrap");

}

}


인스턴스의 자료형에 따라서 호출할 메소드를 다르게 할떄 
결과는 true 또는 false를 반환한다. 



'JAVA > 자바' 카테고리의 다른 글

자바 Swing 텍스트필드 포맷지정  (0) 2015.07.05
자바 Swing ComboBox 값변경 확인  (0) 2015.07.05
자바 Swing JList 스크롤  (0) 2015.07.03
자바 현재시간 출력  (0) 2015.07.01
자바 클래스 배열 생성  (0) 2015.06.30
블로그 이미지

왕왕왕왕

,