본문 바로가기

Programming

[Swing]파일열기 JFileChooser JFileChooser(String currentDirectoryPath) 위와 같은 다이어로그를 여는 클래스이다. 생성자에 들어가는 경로가 최초 보여주는 위치가 된다. JFileChooser fc = new JFileChooser("D:\\JavaRoom"); //JFileChooser 생성 int choice = fc.showOpenDialog(f); //다이어로그를 보여준다. f는 부모 프레임. //리턴값은 열기선택, 취소 중에 하나. if(choice == JFileChooser.APPROVE_OPTION){ //리턴값 체크. 해서 열기 누른 경우에는 File file = this.fc.getSelectedFile(); //선택 파일을 반환한다. tf.setText(file.getAbsoluteP.. 더보기
[Swing] JTable 생성하기. 초기 데이터 입력하기 new JTable(); // 로 만드세용new JScrollPane(Component c); // 이거니까 여기에 JTable 도 들어갈수있어요. // 스크롤 판넬이니까 테이블이 공간보다 크면 스크롤바 나와서 좋아요table = new JTable();pane = new JScrollPane(table);this.add("Center", pane); 이렇게 만든 JTable 의 setModel(TableModel t) 매소드를 이용해서 데이터를 넣는다. 먼저 TableModel 객체에 데이터들과 컬럼을 넣어야 한다. TableModel을 만들기위해 DefaultTableModel 을 상속받아서 클래스를 만들자. class MyTableModel extends DefaultTableModel { //이렇.. 더보기
[Swing] JCombobox 콤보박스 리스트가 나와서 선택해요 콤보 박스 입니다. Integer [] array = {0,1,2,3,4}; JComboBox cbNight = new JComboBox(array); JCOmboBox는 제네릭스 클래스 이기 때문에 안에 들어갈 클래스를 정의해 주어야 합니다. 위에서는 Integer 타입으로 정의하였습니다. 생성자는 배열로 넘어갔고요 벡터 객체를 넘길수도 있습니다. 넘어간 인스턴스의 toString 매소드에 정의된 내용들로 리스트를 출력하는듯 함니다. 원하시는 형태로 기존 인스턴스의 toString 매소드를 오버라이드 하세요. 매소드 setSelectedIndex(0) //입력한 인덱스를 선택상태로 만든다. getSelectedIndex(); //선택된 인덱스를 가져온다 [출처] [자바][스윙] JCombobox 콤보박.. 더보기
[Swing] JRadioButton 라디오 버튼 한번에 1개만 선택 할 수 있는 것이 라디오 버튼이다. 라디오버튼은 아래의 순서로 만든다 1.라디오 버튼 객체 생성 2.버튼 그룹 객체 생성 3.라디오버튼 객체를 버튼그룹에 add 하여 그룹화 4.버튼 객체들을 컨테이너(프레임, 판넬) 에 추가. 아래와 같이 만든다. gibonCode.setLayout(new GridLayout(1,4)); // 그리드 레이아웃 설정. JRadioButton rb1 = new JRadioButton("1"); rb1.setFont(font); // JRadioButton 생성JRadioButton rb2 = new JRadioButton("2"); rb2.setFont(font);JRadioButton rb3 = new JRadioButton("3"); rb3.setFo.. 더보기
[Swing] 윈도우 창 위쪽에 아이콘 바꾸기 "사원 관리 프로그램" 좌측의 아이콘은 원래 자바 아이콘이다. 그러나 이것을 원하는데로 바꿀수 있다. 최상위 프레임의 setIconImage(Image image) 메소드로 설정 가능하다. Image 객체를 받아내려면 Toolkit 클래스를 이용한다. JFrame f = new JFrame("사원 관리 프로그램");Toolkit toolkit = Toolkit.getDefaultToolkit();Image img = toolkit.getImage("open.gif");f.setIconImage(img); [출처] [자바][스윙] 윈도우 창 위쪽에 아이콘 바꾸기|작성자 카루 더보기
[Swing]FileDialog 파일 다이얼로그 파일 다이얼로그 이거 잘만 쓰면 물건이다. FileDialog fileD = new FileDialog(f, "열기", FileDialog.LOAD);FileDialog fileD = new FileDialog(f, "저장", FileDialog.SAVE); // 컴포넌트, 다이얼로그 타이틀제목, // 저장 버튼인지 열기버튼인지. 이와 같이 쓰면 생성자 부분에서 바로 다이얼로그가 떠서 파일을 선 택 하게 한다 ㅋ 선택하게되면 fileD 에 그게 기록이 남는 모양인데. 아래 메소드로 경로를 받아낼수 있다!. String fileD.getFile() //파일이름.확장자 를 받아온다.String fd.getDirectory() //선택한 파일의 경로를 받아온다.File[] fileD.getFiles() [출처.. 더보기
[Swing] JMenuBar 위에 메뉴줄 만들기 JMenuBar mb = new JMenuBar();JMenu mFile = new JMenu("File"); //파일 탭 을 만들고 miOpen = new JMenuItem("Open"); //파일 탭 안에 들어갈 아이템을 만듬mFile.add(miOpen); //파일 탭 안에 Open을 넣는다.miSave = new JMenuItem("Save");mFile.add(miSave);mFile.addSeparator(); //구분선 걍 줄하나 쭉 그어줌.miExit = new JMenuItem("Exit");mFile.add(miExit); mHelp = new JMenu("Help"); //Help 탭 만들기miAbout = new JMenuItem("About Notepad..."); //about .. 더보기
[Swing] Border 보더 BevelBorder bb = new BevelBorder(BevelBorder.RAISED);TitledBorder tb = new TitledBorder(bb, "로그인");p.setBorder(tb); [출처] [자바][스윙] Border 보더|작성자 카루 더보기
[Swing] 자주 쓰는 ActionListener 예제 addActionListener( ActionListenr listener) // 액션 리스너 호출 implements ActionListener //액션 리스너 구현 @Overridepublic void actionPerformed(ActionEvent e) { //액션 퍼폼드 오버라이드 e.getSource() // 이벤트를 호출한 메소드는 Object 형태로 리턴 한다. 형변환 해줘서 사용 하면 된다.} 액션 리스너는 버튼을 클릭 할때나. 텍스트필드에서 엔터를 쳤을때 등 다양한 경우에 작동된다. [출처] [자바]자주쓰는 ActionListener 예제|작성자 카루 더보기
[Swing] 컴포넌트별 포커스 옮기기 4가지 메소드가 있다. 근데 웃긴건 내가 지정한 컴포넌트로 가진 못하고 그 앞 뒤로 간다. 3,4번은 아마 순서가 지명되있는경우 그 싸이클상 앞 뒤를 말하는것 같다. 원하는 컴포넌트인스턴스로 매소드를 호출하면 된다. 1.Component.transferFocus(); 2.Component.transferFocusBackward(); 3.Component.transferFocusDownCycle(); 4.Component.transferFocusUpCycle(); [출처] [자바][스윙]컴포넌트별 포커스 옮기기.|작성자 카루 더보기
[Swing] JTabbedPane 위에 탭을 선택해서 페이지 넘기기 JTabbedPane 라는 패널이 있다. 위쪽에 탭이 나와서 원하는 페이지를 볼 수 있다. 물논 getContentPane() 으로 받아낸 Container 위에 올려야한다. JTabbedPane tab = new JTabbedPane(); tab.addTab("Login", new JPanel() ); tab.addTab("Input", new JPanel() ); tab.addTab("zz", new JPanel() ); //세개 추가하면 새개 추가됨 ㅋ this.con.add("Center", tab); //보더 레이아웃 상태라 Center에 이 Tab 판넬을 넣었다. //con 은 JFrame 객체에서 뽑아낸 Container 값이다. [자바][스윙] JFrame 위에 JPanel을 올릴수 없다 .. 더보기
[Swing] JFrame 위에 JPanel을 올릴수 없다 awt 는 Frame.add() 로 Panel을 Frame 위에 올린다. 하지만 스윙은 JFrame 위에 Panel을 올리지못한다. awt.Frame을 상속받는 (직접적인 상속)JFrame같은 컨텐츠를 중량 컴포넌트 라고 하고 awt.Container를 상속받는 (간접적인 상속)JPanel 같은 컨텐츠를 경량 컴포넌트 라고 하여 중량 컴포넌트 위에 경량 컴포넌트를 올릴수 없다. 하지만 간접적으로 Container를 이용해서 올릴수있다. 소스 JFrame f = new JFrame(title);Container con = f.getContentPane();con.add(new Panel()); [출처] [자바][스윙] JFrame 위에 JPanel을 올릴수 없다.|작성자 카루 더보기
[Swing] 스윙의 간편한 이벤트 등록 일단 JFrame 에서 적용 할 수 있는 윈도우 이벤트를 보겠다. 윈도우창에서 x 버튼을 눌렀을때 행동요령을 지시한다. JFrame.setDefaultCloseOperation(int operation) 행동요령은 정해진 몇개의 상수가 있다. f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); DO_NOTHING_ON_CLOSE (defined in WindowConstants): Don't do anything; require the program to handle the operation in the windowClosing method of a registered WindowListener object. HIDE_ON_CLOSE (defined in .. 더보기
[Swing] 메세지창 띄우기, JOptionPane.showConfirmDialog, JOptionPane.showMessageDialog import javax.swing.JOptionPane; 이걸 임포트하면 자유롭게 쓸수있다. int JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType,int messageType, Icon icon); parentComponent = 이것을 띄어줄 상위 컴포넌트. 이것이 지정된 프레임은 메세지창을 끄기전에 접근 불가. message = 내용 메세지 title = 상단 제목 optionType = 나올 버튼 갯수와 형태 messageType = 좌측 아이콘. 느낌표 물음표 등등.. optionType : //예,확인 = 0, 아니오 = 1, 취소 = 2 YES_NO_OPTIO.. 더보기
[AWT] 이벤트 구현 방법 4모델 이벤트 구현 방법 1모델 implement로 구현해서 this로 자신을 넣어버리기. 구현방법 2모델 구현한 클래스를 리스너에 넣기 클래스 하나 더만들어서 거기서 구현하자. btn.addActionListener(new MyActionEvent(f, btn)); 구현방법 3모델 이너클래스를 통해 이벤트 구현하기. 자신의 멤버를 따로 넘길 필요가 없다. 근데 자기가 직접 implement로 구현하나 별반 다를게 없음. 구현방법 4모델 익명 클래스 활용. f.addWindowListener(new WindowAdapter(){ //사실상 여기 new 부분부터가 익명 클래스임. public void windowClosing(WindowEvent evt){ System.exit(0); } }); [출처] [자바].. 더보기
[AWT] actionPerformed(ActionEvent evt) 버튼클릭 actionPerformed(ActionEvent evt) 매소드 대표적으로 버튼클릭 시에 발동 되는 메소드 이기도 하다. 해당 메소드를 오버라이드 하기전에 ActionListener 더보기
[AWT] 자잘한 컴퍼넌트들의 메소드 프레임의 기본적인 메소드 setSize(800, 600); pack(); //사이즈 안정해줘도 내부에 있는 컴퍼넌트에 따라 크기를 알아서 정해준다. setLocation(100, 100); setVisible(true); dispose(); 할당된 리소스를 반환함. 레이블 new Label(String text, int alignment); //alignment에 Label의 상수가 들어간다. Label.RIGHT 폰트 java.awt.Font setFont(Font 폰트); //폰트 활용방법. Font(String 폰트명, int 스타일, int Size); //스타일은 Font 클래스에 상수로 다양하게 있다. 버튼 btn.setBackground(Color.BLUE); //바탕색 btn.setFore.. 더보기
[AWT] Image, paint() 이용하여 그림그리기 Image 클래스 이미지 클래스는 툴킷 클래스를 생성해서 만든다 Toolkit toolkit = this.getToolkit(); //getToolkit은 Frame 의 자손이어야 하는듯(어쩌면 컴퍼넌트 단계일지도 모름) Image image = toolkit.getImage("D:\\Downloads\\jimin.jpg"); //이미지 클래스는 이렇게 만듬. 이미지를 출력 하려면 void java.awt.Window 클래스의 public void paint(Graphics g) 메소드를 오버라이딩 해야한다. Graphics 의 메소드 drawImage 를 실행한다. g.drawImage(Image img, int x, int y, int width, int height, ImageObserver obs.. 더보기
[AWT] Layout 레이아웃 설정은 아래 메소드로 한다. Frame, Panel, 등이 사용 가능하다. setLayout(LayoutManager 레이아웃) //LayoutManager에 생성한 Layout을 넣으면 된다. ====new BorderLayout(int x축 간격, int y축 간격);==== //해당 레이아웃 화 된 프레임, 판넬에서 다음 메소드를 사용한다. 두가지 추가 메소드가 있으므로 위치는 어디에 들어가도 상관 없다. add(Component comp, Object constraints); add(String name, Component comp); 소스 f = new Frame("Border Layout Demo"); f.setLayout(new BorderLayout(10, 50)); f.add(b.. 더보기
Eclipse의 VE를 이용해서 SWT 어플리케이션을 만든다(上) SWT (이)란 무엇인가 SWT는, Eclipse의 가장 중심적인 윈도우·툴 킷입니다. 윈도우·시스템은 보통, 단순하게 윈도우를 관리·표시할 만한 기능을 제공합니다. 다만, 그 만큼이라면 윈도우는 「뒤로 숨어 있는 윈도우를 클릭하면 앞에 나온다」라고 하는 기본 동작을 해 주지 않습니다. 윈도우·어플리케이션은, 그렇게 말한 처리를 마우스 이벤트 처리등을 적절히 실시하는 것으로 개별적으로 실시하지 않으면 안되지 않고, 모든 윈도우의 출력은, 일일이 그래픽API를 이용하지 않으면 안됩니다. 거기서, 윈도우·시스템에는 모든 윈도우에 공통의 기능을 애드 온(add-on) 해 추가하고 있습니다. 예를 들면, 윈도우의 테두리를 드래그해서 크기를 바꾸거나 타이틀 바를 드래그 해 이동하거나 하는 기능입니다. 이러한 기능.. 더보기
Eclipse의 VE를 이용해서 SWT 어플리케이션을 만든다(下) 본 편에서는 Eclipse 의Visual Editor(이하VE)를 사용해SWT 어플리케이션을 작성하는 방법을 설명합니다. 전편에서는VE를 이용하는 환경을 구축했습니다. 후편에서는 드디어VE를 사용해, SWT 패널을 디자인해 봅시다. VE패널을 디자인하는 기본은, 다음의 스텝입니다. Eclipse를 실행한다 . Java 프로젝트(혹은, Java를 계승한 프로젝트)를 작성한다. [신규]로 비주얼·클래스를 추가한다. 비주얼·클래스(기본은Shell 또는 Composite의 서브 클래스)에, 비주얼 에디터로 컴퍼넌트를 붙여 간다. [실행]→[JavaBeans ]그리고 실행해 테스트한다 4,5 를 반복한다 비주얼·클래스의 원시 코드는 가능한 한 만지지 않고(VE 만으로 편집한다), 서브 클래스를 만드는 등 리스너나.. 더보기
이클립스 비주얼 에디터(Visual Editor) 플러그인 다운로드 및 설정 방법 이클립스 비주얼 에디터(Visual Editor) 플러그인 다운로드 및 설정 방법 이클립스 WTP 2.0.1 (이클립스 3.3 Europa 유로파 버젼) 이라고 가정하고 설명한다. 1. 플러그인을 다운로드 한다. 유로파 용(3.3) 다운로드 => : http://www.ehecht.com/eclipse_ve/ve_eclipse_33_v200709242300_win.zip 가니메데 용(3.4) 다운로드 => : http://www.ehecht.com/eclipse_ve/ve_eclipse_34_200807092330_win.zip 2. 다운로드 결과. ve_eclipse_33_v200709242300_win.zip 파일을 여기서는 바탕 화면에 다운 받았다. 3. 압축 해제 해제하면 features 와 pl.. 더보기
[Eclipse] Visual Editor 플러그인 설치 출처 : http://okjkillo.tistory.com/152자바 프로그래밍을 이용하여 UI를 만드는 것은 쉽지 않은 일이다.MFC나 C#에서 처럼 인터페이스를 작성하기 쉬운 폼을 기본으로 제공하는 것이 아니다보니일일이 위치며 레이아웃등을 지정을 해줘야 하는 상황이 발생한다.논리적인 프로그래밍을 지향하는 자바 프로그래밍에서 이렇게 사람을 고생시키는 것일까?Eclipse의 플러그인(Plug-in)으로 Visual Editor를 사용하면 보다 쉽게 UI를 설계할 수 있다.물론 JBuilder나 Netbeans을 사용하여 UI를 작성할 수도 있다.이클립스를 선호하기 때문에 이클립스에서 Visual Editor를 플러그인으로 설치하는 방법을 알아보고자 한다.이클립스에서 플러그인을 설치하기 전에 Visual .. 더보기
[Chapter19 과제물][구조체 실습 프로젝트] 연습과제1>> 17일차 학생관리 프로그램을 다음과 같이 수정해보자. StuManage(v2.0) ① 메뉴는 [입력/출력/정렬/검색/종료] 메뉴로 구현되며, 각각의 기능은 사용자 정의함수로 구현한다. ② 구조체 배열은 main 함수에서 선언한다. - 전역변수 사용 금지 [출력결과] 실행파일 참조 더보기
[Chapter18 과제물][구조체 2] 연습과제1>> 아래와 같은 은행관리 프로그램을 작성해보자. ① 구조체 멤버는 계좌번호, 비밀번호, 이름, 잔액으로 정의한다. 구조체 정의 후, main함수에서 다음과 같이 초기화 한다. ACC ac = {1111, "1234", "홍길동", 5000}; ② 고객 한사람의 입금/출금/잔액조회를 수행하는 프로그램을 작성한다. 각각의 기능(입금/출금/잔액조회)은 함수로 구현한다. [출력결과] 실행파일 참조 더보기
[Chapter17 과제물][구조체 1] 연습과제1>> 5명의 학생 데이터를 구조체에 입력받아 출력하는 프로그램을 작성해보자. StuManage(v1.0) ① 학생정보는 학번, 이름 국어, 영어, 수학, 총점, 평균, 등급, 순위로 구성된다. ② 학번은 1번부터 차례대로 저장되며, 이름, 국어, 영어, 수학 점수는 입력받는다. ③ 입력받은 점수로 총점, 평균, 등급, 순위를 구한다. ④ 구조체에 저장된 데이터를 출력한다. [출력결과] 실행파일 참조 더보기
[Chapter16 과제물][문자열 함수] 연습과제1>> ‘인생을 100점짜리로 만들기 위한 조건’을 찾는 법을 프로그램으로 작성해보자. 1. 알파벳과 숫자를 순서대로 연결한다. (A는 1, B는 2, C는 3....Z는 26을 연결한다. ) 2. 어떤 단어나 문장에서 알파벳과 연결된 숫자를 모두 더해 100이 되는 단어를 찾는다. (예를 들어 ‘열심히 일하다’의 ‘hard work’의 합은 98점, 지식의 ‘knowledge'는 96점 ’사랑‘은 ’54점, ‘돈’ ‘money’는 72점이다.) 3. 대/소문자는 구별하지 않는다. [출력결과] 실행파일 참조 당신은 인생을 100점짜리로 만들기 위한 조건을 무엇이라 생각 하시나요??(^&^) 더보기
[Chapter15 과제물][문자열] 연습과제1>> 문자열을 입력받아 대문자, 소문자, 기타문자의 갯수만큼 별표를 찍는 프로그램을 작성해보자. [출력결과] 문자열 입력 : Aba%^3AcdzZ7*() === 갯수 출력 === 대 문 자 : *** 소 문 자 : ***** 기타문자 : ******* Press any key to continue 연습과제2>> 문자열을 입력받아 알파벳의 갯수만큼 별표를 찍는 프로그램을 작성해보자. 단, 대·소문자는 구별하지 않으며, 입력되지 않은 알파벳은 출력하지 않는다. [출력결과] 문자열 입력 : Aba%^3AcdzZ7*() === 알파벳 갯수 출력 === A : *** B : * C : * D : * Z : ** Press any key to continue 더보기
[Chapter14 과제물][포인터 & 함수] 연습과제1>> 다음과 같은 계산기 프로그램을 작성해보자. ① 두 수를 입력받아 사칙연산을 수행하는 프로그램을 작성한다. ② 프로그램은 [N/n]을 입력받기 전에는 무한반복된다. ③ 프로그램이 종료되면, 각각의 연산이 몇 번 수행됐는지 결과를 출력한다. ④ 사용자 정의 함수를 반드시 3개 이상 구현하여 프로그램을 완성해보자. [출력결과] 실행파일 참조 연습과제2>> 다음과 같은 정렬 프로그램을 작성해보자. ① 0~99까지의 100개의 정수를 랜덤하게 저장하여 1을 입력하면 오름차순 정렬되고, 2를 입력하면 내림차순 정렬되는 프로그램을 작성해보자. ② 이 프로그램을 사용자 정의함수로 나눠 구현해보자. ③ 배열의 크기는 매크로 상수로 선언한다. [출력결과] 실행파일 참조 더보기
[Chapter13 과제물][포인터의 이해] 연습과제1>> ① 아래와 같이 int형 배열을 선언한다. int num[5] = {1, 2, 3, 4, 5}; ② ‘+’연산자는 오른쪽으로 ‘-’ 연산자는 왼쪽으로 입력받은 인덱스부터 출력한다. [출력결과] 정수 출력 : 1 2 3 4 5 오른쪽(+), 왼쪽(-) : + 인덱스 입력(0~4) : 3 결과 출력 : 4 5 1 2 3 Press any key to continue [출력결과] 정수 출력 : 1 2 3 4 5 오른쪽(+), 왼쪽(-) : - 인덱스 입력(0~4) : 2 결과 출력 : 3 2 1 5 4 Press any key to continue 더보기