'C'에 해당되는 글 116건

  1. 2007.11.07 AWT>List by 청웨일
  2. 2007.11.07 AWT>Choice by 청웨일
  3. 2007.11.07 throws IOException by 청웨일
  4. 2007.11.07 AWT>Checkbox by 청웨일
  5. 2007.11.07 AWT>TextArea by 청웨일

AWT>List

C/Java : 2007. 11. 7. 12:06

- 한번에 여러개의 항목을 출력할 수 있다.

- 1개 이상의 항목을 선택할 수 있다.



*

import java.awt.*;
import java.awt.event.*;


public class TestLists extends Frame implements ItemListener {
 List lstBread;
 
 TextField tField;
 
 public TestLists() {
  lstBread = new List(3, true);    //List의 인스턴스 생성(행수 지정,다중선택허용여부)
  lstBread.add("White Bread");
  lstBread.add("Wheat Bread");
  lstBread.add("Rye Bread");
  lstBread.addItemListener(this);  //이벤트 처리를 위한 ItemListener인터페이스 구현
 
  tField = new TextField(" ", 30);
 
  setLayout(new FlowLayout());
  add(lstBread);
  add(tField);
 
  addWindowListener(new WinCloser());
  setTitle("Using Lists");
  setBounds(100,100,300,300);
  setVisible(true);
 }
 
 public void itemStateChanged(ItemEvent ie) {
  List selBread = (List)ie.getItemSelectable();   //이벤트발생 근원지를 얻는다.
  if(selBread.getSelectedItem() != null)          //1개의 항목 선택
   tField.setText("You selected " + selBread.getSelectedItem());
  else {
   tField.setText("");
   for(int i=0; i<selBread.getItemCount(); i++) {
    if(selBread.isIndexSelected(i)) {
     String oldString = tField.getText();
     tField.setText(oldString + " " + selBread.getItem(i));
    }  //선택되었으면 출력될 문자열에 내용을 추가
   }   //TextField에 문자열을 추가하는 메소드가 존재하지 않기 때문에 수동으로 처리
  }
 }
 
 public static void main(String[] args) {
  TestLists tc = new TestLists();
 }
}

class WinCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.exit(0);
 }
}

*


Posted by 청웨일

AWT>Choice

C/Java : 2007. 11. 7. 12:05

- 풀다운 메뉴/리스트

- 현재 선택항목은 항상보인다.

- 1개의 항목만 선택 가능하다.



*

import java.awt.*;
import java.awt.event.*;


public class TestChoices extends Frame implements ItemListener {
 Choice clBread;
 
 TextField tField;
 
 public TestChoices() {
  clBread = new Choice();            //Choice 인스턴스화


  clBread.add("White Bread");         //리스트에 항목 추가
  clBread.add("Wheat Bread");
  clBread.add("Rye Bread");
 
  clBread.addItemListener(this);
 
  tField = new TextField(30);
 
  setLayout(new FlowLayout());
  add(clBread);
  add(tField);
 
  addWindowListener(new WinCloser());
  setTitle("Using Choices");
  setBounds(100,100,300,300);
  setVisible(true);
 }
 
 public void itemStateChanged(ItemEvent ie) {    //핸들링
  Choice selBread = (Choice)ie.getItemSelectable();
  tField.setText("You selected " + selBread.getSelectedItem());
 }                                           //ㄴ선택항목에 대한 정보 제공
 
 public static void main(String[] args) {
  TestChoices tc = new TestChoices();
 }
}

class WinCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.exit(0);
 }
}

*


Posted by 청웨일

throws IOException

C/Java : 2007. 11. 7. 12:01

- throws IOException


구문 그대로 해석을 해 보면, [입출력 예외를 던진다] 입니다.

자바에서는 런타임시에 발생할 수 있는 여러가지 예외들을 처리하는
별도의 메카니즘을 가지고 있습니다. throws 키워드는 실행시간에
예외가 발생했을 경우 해당 예외를 직접처리하지 않고 다른 곳에서
처리하도록 예외를 던지겠다 라는 의미입니다.

예외를 직접처리하는 경우와 던지는 경우의 예는 다음과 같습니다.

- 직접처리할 경우.

method a() {
  try {
    // 실행시간에 예외가 발생할 수 있는 코드들..
  } catch (Exception e) {
    // 예외발생시에 처리할 코드들..
  }
}

위와 같이 try - catch 블록을 써서 예외를 직접 받아서(catch) 처리할 경우는
try 블록 내에서 예외가 발생했을 때, 예외가 던져지고(throw), 이 던져진 예
외는 catch 블록에 의해서 받아져서 결국, catch 블록내의 코드들이 실행됩니다.
이 경우에는 예외가 발생하더라도 catch 블록에 의해 처리되고 난 후, catch
블록 이 후의 코드들이 계속해서 실행 될 수 있습니다.

- 예외를 던질 경우.

method a() throws Exception {
  // 실행시간에 예외가 발생할 수 있는 코드들..
}

이 처럼 예외를 직접처리하지 않고 던지는 경우에는, 예외가 발생하면 a() 메
소드의 예외발생 지점부터 그 후의 코드들은 실행이 중단되며, a() 메소드를
호출한 다른 메소드에게 예외가 던져집니다(throw). 만약 main() 메소드에서
a() 메소드를 호출했다면, 해당 예외는 main() 메소드에게로 전달되고, main()
메소드에서도 직접 처리하지 않고 예외를 던질경우 자바가상머신(JVM)이 해당
예외를 받아서 처리하게 됩니다. 즉, 이렇게 예외를 던질경우는 예외발생 즉시
코드의 실행은 중단되며, 결국 JVM에 의해 예외에 대한 레포트가 화면에 출력
되고 프로그램이 종료됩니다.

- 또한 다음과 같이 의도적으로 예외를 발생시켜서 던질 수도 있습니다.

method a() throws MyException {
  if (// 예외발생 조건이 만족되면..) {
    throw new MyException();
  }
}

위와 같이 의도적으로 예외를 발생시켜서 이를 try - catch 블록으로 처리 하던지
아니면 a() 메소드를 호출한 메소드로 던지던지 할 수 있습니다. 이 예제의 경우
위와 같이 하기 위해서는 다음과 같은 형태의 MyException 클래스가 정의되어 있
어야 합니다.

class MyException extends Exception {
  // MyException 클래스 정의 코드들..
}

위와 같이 예외를 던지기 위한 클래스 정의의 경우는 일반적으로 Exception
클래스를 상속받아서 작성하며, 이는 예외를 던지는 메카니즘을 구현하기 위한
방법입니다. 참고로 Exception 클래스는 Throwble 클래스의 하위 클래스이며
Throwble 클래스가 모든 예외나 에러 클래스들의 슈퍼클래스 이며, throws 메카
니즘의 출발점이 됩니다.

따라서 자바에서 모든 예외클래스 들은 Exception 클래스를 상속받고 있으며,
입출력(IO)에 관련되 예외 인스턴스를 정의한 클래스가 질문자 분께서 질문한
IOException 클래스 이며, java.io 패키지 내에 정의되어 있습니다. 따라서
코드내에 IOException 클래스에 대한 선언을 하기 위해서는 java.io 패키지를
import 해야 하며, 그렇지 않을 경우, 항상 java.io.IOException 과 같이 전체
경로를 명시해 줘야 JVM이 제대로 클래스를 찾아갈 수 있습니다.



* 원문 : http://kin.naver.com/db/detail.php?d1id=1&dir_id=10106&eid=SSQpNugIecChoH6VxQajC8wEm6F51tCb&qb=dGhyb3dz


* 출처 : 네이버 지식인 cbr399

Posted by 청웨일

AWT>Checkbox

C/Java : 2007. 11. 7. 12:00

체크 상태를 On/Off 할수 있는 스위치

그룹묶기 가능


*

import java.awt.*;
import java.awt.event.*;

public class TestCheckboxes extends Frame implements ItemListener {
 Checkbox cbWhiteBread;
 Checkbox cbWheatBread;
 Checkbox cbRyeBread;
 Checkbox cbToasted;      //변수 선언
 
 TextField tField;
 
 public TestCheckboxes() {
  cbWhiteBread = new Checkbox("White Bread");   //객체생성
  cbWhiteBread.setState(false);    //체크되지 않은 상태로 초기화
  cbWhiteBread.addItemListener(this);
 
  cbWheatBread = new Checkbox("Wheat Bread");
  cbWheatBread.setState(false);
  cbWheatBread.addItemListener(this);
 
  cbRyeBread = new Checkbox("Rye Bread");
  cbRyeBread.setState(false);
  cbRyeBread.addItemListener(this);
 
  cbToasted = new Checkbox("Toasted");
  cbToasted.setState(false);
  cbToasted.addItemListener(this);
 
  tField = new TextField(30);
 
  setLayout(new FlowLayout());
  add(cbWhiteBread);
  add(cbWheatBread);
  add(cbRyeBread);
  add(cbToasted);
  add(tField);
 
  addWindowListener(new WinCloser());
  setTitle("Using Checkboxes");
  setBounds(100,100,300,300);
  setVisible(true);
 }
 
 public void itemStateChanged(ItemEvent ie) {  //체크박스의 상태가 변할때 호출된다.
  // TODO Auto-generated method stub
  Checkbox cb = (Checkbox)ie.getItemSelectable();   //핸들
  if(cb.getState()) tField.setText(cb.getLabel());   //객체의 상태를 체크하고
  else tField.setText("Not " + cb.getLabel());        //해당 객체의 레이블 출력
 }

 public static void main(String[] args) {
  TestCheckboxes tcb = new TestCheckboxes();
 }
}


class WinCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.exit(0);
 }
}

*


그룹으로 묶은 것

*

import java.awt.*;
import java.awt.event.*;

public class TestCheckboxGroup extends Frame implements ItemListener {
 Checkbox cbWhiteBread;
 Checkbox cbWheatBread;
 Checkbox cbRyeBread;
 
 Checkbox cbToasted;
 
 TextField tField;
 
 public TestCheckboxGroup() {
  //생성자를 이용해 지역객체 선언
  CheckboxGroup cbgBread = new CheckboxGroup();
 
  //체크박스를 그룹으로 묶는다
  //체크박스 생성자에 그룹이름을 추가
  cbWhiteBread = new Checkbox("White Bread", cbgBread, false);
  cbWhiteBread.addItemListener(this);
 
  cbWheatBread = new Checkbox("Wheat Bread", cbgBread, false);
  cbWheatBread.addItemListener(this);
 
  cbRyeBread = new Checkbox("Rye Bread", cbgBread, false);
  cbRyeBread.addItemListener(this);
 
  //그룹으로 묶인 것과는 별개로 작동한다.
  cbToasted = new Checkbox("Toasted");
  cbToasted.setState(false);
  cbToasted.addItemListener(this);
 
  tField = new TextField(30);
 
  setLayout(new FlowLayout());
  add(cbWhiteBread);
  add(cbWheatBread);
  add(cbRyeBread);
  add(cbToasted);
  add(tField);
 
  addWindowListener(new WinCloser());
  setTitle("Using Checkboxes");
  setBounds(100,100,300,300);
  setVisible(true);
 }

 public void itemStateChanged(ItemEvent ie) {
  Checkbox cb = (Checkbox)ie.getItemSelectable();
  if(cb.getState()) tField.setText(cb.getLabel());
  else tField.setText("Not " + cb.getLabel());
 }

 public static void main(String[] args) {
  TestCheckboxGroup tcb = new TestCheckboxGroup();
 }
}

class WinCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.exit(0);
 }
}

*

그룹으로 묶인 것과 별도의 것은 체크박스의 모양이 다르다.

Posted by 청웨일

AWT>TextArea

C/Java : 2007. 11. 7. 11:59

- appebd() : 텍스트의 끝에 문자열 추가

- insert() : TextArea의 x 위치에 문자열 추가 후, 나머지 텍스트를 오른쪽으로 이동

- replaceRange() : 시작과 끝 지점을 지정하여 전달된 문자열을 사용해 택스트 대치


*

import java.awt.*;
import java.awt.event.*;


public class TestTextArea extends Frame implements ActionListener {
 Button btnExit;
 Button btnAppend;
 Button btnInsert;
 Button btnReplace;
 TextArea taLetter;
 
 public TestTextArea() {                                    //버튼 객체 생성
  btnAppend = new Button("Append");
  btnAppend.addActionListener(this);
  btnInsert = new Button("Insert");
  btnInsert.addActionListener(this);
  btnReplace = new Button("Replace");
  btnReplace.addActionListener(this);
  btnExit = new Button("Exit");
  btnExit.addActionListener(this);
 

//비어있는 TextArea 객체 생성
  taLetter = new TextArea("", 10, 30, TextArea.SCROLLBARS_VERTICAL_ONLY);

//TextArea영역에 텍스트 생성
  taLetter.append("I am writing this letter to inform you that you");
  taLetter.append(" havebeen drafted into the United States Army.");
  taLetter.append(" You will report to Fort Bragg, North Carolina ");
  taLetter.append("on July 20, 1966. You will be assigned to ");
  taLetter.append("Vietnam.");
 
  add(btnAppend);
  add(btnInsert);
  add(btnReplace);
  add(btnExit);
  add(taLetter);
 
  this.setLayout(new FlowLayout());
 

//윈도우창 생성
  addWindowListener(new WinCloser());
  setTitle("Using a TextArea Object");
  setBounds(100,100,400,400);
  setVisible(true);
 }
 
 public void actionPerformed(ActionEvent ae) {    //각 버튼에 이벤트 적용
  if(ae.getActionCommand().equals("Append"))
   taLetter.append("\n\nSincerely, \n     The DraftBoard");   //Sincerely라인추가
  if(ae.getActionCommand().equals("Insert"))
   taLetter.insert("Dear Steve, \n     ",0);                           //인사말 추가
  if(ae.getActionCommand().equals("Replace"))
   taLetter.replaceRange("Dear Jerry, \n     ", 0,12);             //다른인사말로 교체/대치
  if(ae.getActionCommand().equals("Exit"))
   System.exit(0);
 }
 
 public static void main(String[] args) {
  TestTextArea tta = new TestTextArea();
 }
}

class WinCloser extends WindowAdapter {
 public void WindowClosing(WindowEvent e) {
  System.exit(0);
 }
}

*


Posted by 청웨일