비투즈의 노트르담

전체 글 (58)

  1. 2013.04.05 이벤트 & 그래픽

    이벤트 리스너(Listener, 청취자 라는 뜻을 가진 단어) 인터페이스는 리스너(사용자)와 이벤트 소스(버튼)을 연결해주는 다리 역할을 합니다. 리스너로써의 역할은 인터페이스를 구현하고 버튼을 등록하고 이벤트 처리 코드를 제공합니다. 이벤트 소스는 리스너로부터 등록을 받고, 사용자로부터 이벤트를 받고 리스너 이벤트 처리 메소드를 호출합니다. 이벤트 객체로써 이벤트 콜백 메소드에 대한 인자고, 이벤트에 대한 데이터를 리스너한테 돌려주는 역할을 합니다. JFrame frame = new JFrame(); //Gui창을 만들 때, 사용 frame.getContentPane().add(button); // 위젯(번튼, 텍스트 필드 등)을 추가할 때 사용 frame.setSize(300, 300); // 크기 ..

  2. 2013.04.05 변수표기법

    같이 개발해야 하므로, 변수를 맞추는 것도 중요하다고 생각해서 올립니다. ~ Camel표기법 , Pascal표기법이 실무에서 자주 쓰인다고 책에서 그렇다는 군요. 닷넷에서도 헝가리안 표기법 대신 Camel표기법과 Pascal표기법을 사용할 것을 권장하고 있습니다. 헝가리안 표기법이란 무엇이냐면, API를 공부하다가 안 사실입니다. lpfn 구지나 포인터 변수를 함수형 포인터, 문자열 포인터, 구조체 포인터를 나눠서 표기하는 이유는 나중에 프로그래머가 데이터타입 캐스팅(=데이터 형변환)을 할때 혼동하지 않고, 편리하게 쓰려고 하기 때문에 붙이는 것입니다. 요즘시절이야 인텔리센스가 떠서 쉽게 볼 수 있지만... 예전엔 안그랬으니 이렇게 하는 방법은 획기적이었죠. 참고로 이런 코드 명명법을 헝가리안 코드라고 ..

  3. 2013.04.05 스타일

    네이버에 프로그래밍 소스를 보다가 문뜩 든 생각이 좀더 알아보기 쉽게 프로그램을 짜는 방법이 없을까 해서 책을 찾아보고 많은 깨닮음을 얻어서 알려드립니다. 이 책은 The Practice of Programming 이라는 책인데, 프로그래밍 자기만의 스타일보다는 누구도 알아보기 쉽게 프로그램을 짜라고 충고를 해줍니다. 이 책에서는 프로그래밍 좋은 코드 와 나쁜 코드를 예를 들어가면서 스타일의 규칙을 설명하면서 예를 들어갑니다. 제가 가장 중요하다고 생각하는 것 몇개만 적겠습니다. ㅎ "전역변수에는 서술적인 이름을, 지역변수에는 짧은 이름을 붙이라. "고 했는데요. 예를 들어 위에 꺼보다 밑에꺼가 더 알기 쉽습니다. for(theElementIndex = 0; theElementIndex < numberO..

이벤트

리스너(Listener, 청취자 라는 뜻을 가진 단어)

인터페이스는 리스너(사용자)와 이벤트 소스(버튼)을 연결해주는 다리 역할을 합니다.

리스너로써의 역할은 인터페이스를 구현하고 버튼을 등록하고 이벤트 처리 코드를 제공합니다.

이벤트 소스는 리스너로부터 등록을 받고, 사용자로부터 이벤트를 받고 리스너 이벤트 처리 메소드를 호출합니다.

이벤트 객체로써 이벤트 콜백 메소드에 대한 인자고, 이벤트에 대한 데이터를 리스너한테 돌려주는 역할을 합니다.

JFrame frame = new JFrame(); //Gui창을 만들 때, 사용

frame.getContentPane().add(button); // 위젯(번튼, 텍스트 필드 등)을 추가할 때 사용

frame.setSize(300, 300); // 크기 지정

frame.setVisible(true); //보이게

버튼을 클릭하면, GUI 이벤트가 일어납니다.

이벤트가 일어나는지 볼려면, 이벤트 소스를 등록해야 합니다.

등록메소드명은 add(이벤트 유형)Listener -> ex) button.addActionListener(this);

리스너 ---- button.addActionListener(this) --> 소스

<--- actionPerformed(Event) ---------

이벤트 처리 콜백 메소드는

public void actionPerformed(ActionEvent event) {

button.setText("클릭");

}

종합하자면,

public class EventExample implements ActionListener {

JButton button;

public static void main(String[] args) {

JFrame frame = new JFrame();

button = new JButton("클릭");

button.addActionListener(this);

frame.getContentPane().add(button);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300, 300);

frame.setVisible(true);

}

public void actionPerformed(ActionEvent event) {

button.setText("클릭 되었다");

}

그래픽

JPanel의 하위클래스를 만들고, paintComponent() 라는 매소드를 오버라이드하면 됩니다.

사용방식으로는,

public void paintComponent(Graphics g){

Image image = new ImageIcon("CJU.jpg).getImage();

g.drawImage(image, 5, 5, this);

}

publiv void paintComponent(Graphics g){

g.fillRect(0, 0, this.getWidth(), this.getHeight());

int red = (int) ( Math.random() * 255);

int green = (int) (Math.random() * 255);

int blue = (int) (Math.random() * 255);

Color randomColor = new Color( red, green, blue );

g.setColor(randomColor);

g.fillOval(70, 70, 100, 100); // g.fillOval(왼쪽, 위, 너비 pixel, 높이 pixel)

}

Graphics 레퍼런스를 가지고 호출할 수 있는 메소드

drawImage(), drawLine(), drawPolygon(), drawRect(), drawOvel(), fillRect(), fillRoundRect(), setColor()

를 호출 할 수가 있습니다.

Graphics 레퍼런스는 Graphics2D를 참조합니다.

Graphics2D 호출할 수있는 다양한 메소드

fill3DRect(), draw3DRect(), rotate(), scale(), shear(), transform(), setRenderingHints()

public void paintComponent(Graphics g){

Graphics2D g2d = (Graphics2D) g;

GradientPaint gradient = new GradientPaint(100, 100, Color.blue, 150, 150, Color.white);

g2d.setPaint(gradient);

g2d.fillOval(100, 100,130, 130);

}

public void paintComponent(Graphics g){

Graphics2D g2d = (Graphics2D) g;

int red = (int) ( Math.random() * 255 );

int green = (int) ( Math.random() * 255 );

int blue = (int) ( Math.random() * 255 );

Color startColor = new Color(red, green, blue);

int red = (int) ( Math.random() * 255 );

int green = (int) ( Math.random() * 255 );

int blue = (int) ( Math.random() * 255 );

Color endColor = new Color(red, green, blue);

GradientPaint gradient = new GradientPaint(100, 100, startColor, 150, 150, endColor );//GradientPaint(시작점, 시작하는색, 끝점, 끝나는색);

g2d.setPaint(gradient);

g2d.fillOval(100, 100, 130, 130);

}

책을 보고 정리한 내용입니다.

이상 "Yang"이였습니다.

- Yang -

'프로그래밍 > 자바' 카테고리의 다른 글

토큰(Token)  (0) 2013.04.10
레이아웃(Layout) & 패널(Panel)  (0) 2013.04.05
자바 파일 입출력 3 - 문자스트림  (0) 2013.04.05
자바 파일 입출력 2 - Filter Stream  (0) 2013.04.01
자바 파일 입출력  (0) 2013.04.01

같이 개발해야 하므로, 변수를 맞추는 것도 중요하다고 생각해서 올립니다. ~

Camel표기법 , Pascal표기법이 실무에서 자주 쓰인다고 책에서 그렇다는 군요.

닷넷에서도 헝가리안 표기법 대신 Camel표기법과 Pascal표기법을 사용할 것을 권장하고 있습니다.

헝가리안 표기법이란 무엇이냐면,

API를 공부하다가 안 사실입니다.

lpfn

구지나 포인터 변수를 함수형 포인터, 문자열 포인터, 구조체 포인터를 나눠서 표기하는 이유는 나중에 프로그래머가

데이터타입 캐스팅(=데이터 형변환)을 할때 혼동하지 않고, 편리하게 쓰려고 하기 때문에 붙이는 것입니다.

요즘시절이야 인텔리센스가 떠서 쉽게 볼 수 있지만... 예전엔 안그랬으니 이렇게 하는 방법은 획기적이었죠.

참고로 이런 코드 명명법을 헝가리안 코드라고 하는데, 마이크로소프트사에서 프로그래밍 잘하는 사람이 이렇게 이름을 붙여서

짜는걸 보고, 헝가리사람이 짜는 코드 명명법이 유명해져서 헝가리안 코드라고 불리는거고...

그게 찰스시모니라는 사람입니다.

WndClass.lpfnWndProc = WndProc;

만약 여기서 lpfn이 빠졌다면 이게 구조체를 담는건지, 문자열을 담는건지 엄청 햇갈렸을 겁니다.

하지만 이름에서 딱 표기를 해주면서 확실하게 "이건 함수포인터를 담는 변수다"라고 알려주는거고요.

하지만, 역사가 오래된 시절이나 그런거지 요즘은 헝가리안 표기법이 별 필요없어 보입니다.

Camel표기법 이란,

낙타같다라고 해서 단어와 단어사이 대문자로 구분하는 방법입니다.

ex) boardColor, mathExam

파스칼 표기법이란,

모든 단어를 첫문자에 대문자로 사용합니다.

property, event, class이름에 사용할 것을 권장합니다.

ex) BoardColor, MathExam

서로 공감하는 블로그가 되고 싶습니다. 보고 댓글은 달아주셨으면 합니다. 잘못된거 비평 받겠습니다.

이상 "Yang"의 글이였습니다.

- Yang -

'프로그래밍 > 프로그래밍Tip' 카테고리의 다른 글

싱글턴 패턴  (0) 2013.05.24
SimpleVisualLauage (svl)  (0) 2013.04.11
홀수 마방진  (0) 2013.04.11
개미수열  (0) 2013.04.11
스타일  (0) 2013.04.05

네이버에 프로그래밍 소스를 보다가 문뜩 든 생각이 좀더 알아보기 쉽게 프로그램을 짜는 방법이 없을까 해서 책을 찾아보고 많은 깨닮음을 얻어서 알려드립니다.

이 책은 The Practice of Programming 이라는 책인데, 프로그래밍 자기만의 스타일보다는 누구도 알아보기 쉽게 프로그램을 짜라고 충고를 해줍니다.

이 책에서는 프로그래밍 좋은 코드 와 나쁜 코드를 예를 들어가면서 스타일의 규칙을 설명하면서 예를 들어갑니다. 제가 가장 중요하다고 생각하는 것 몇개만 적겠습니다. ㅎ

"전역변수에는 서술적인 이름을, 지역변수에는 짧은 이름을 붙이라. "고 했는데요.

예를 들어 위에 꺼보다 밑에꺼가 더 알기 쉽습니다.

for(theElementIndex = 0; theElementIndex < numberOfElements; theElementIndex++)

{

elementArray[theElementIndex] = theElementIndex;

}

for(i = 0; i < nelems; i++)

{

elem[i] = i;

}

"일관성을 지켜라"

class UserQueue{

int noOfItemsInQ, frontOfTheQueue, queueCapacity;

}// 보통 이런식으로 쓰시는 분은 없을꺼라고 생각하지만, 매우 중요한 예인것 같습니다 .ㅋㅋㅋ

class UserQueue{

int nItems, front, capacity; // 훨씬 알아보기 쉽습니다.

}

"함수 이름에는 능동형을 써라" 제일 중요한 내용이라고 생각합니다.

예를 들어 boolean 참과 거짓을 반환하는 함수에

if(checkoctal(c)) //이런식으로 쓰면 알아볼 방법이 없습니다.

그래서 if(isoctal(c)) // 앞에 is를 쓰면 참과 거짓을 알방법이 분명해집니다.

누구나 다 아는 상식을 적은 거지만, 다시 한번보면, 그래도 프로그래밍 간결하게 짜는데 도움이 조금이나마 될 것 같아 적어보았습니다.

이상 "Yang"의 글이였습니다.

- Yang -

 

'프로그래밍 > 프로그래밍Tip' 카테고리의 다른 글

싱글턴 패턴  (0) 2013.05.24
SimpleVisualLauage (svl)  (0) 2013.04.11
홀수 마방진  (0) 2013.04.11
개미수열  (0) 2013.04.11
변수표기법  (0) 2013.04.05