일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 클래스
- 자동형변환
- Java
- 제너릭
- start.spring.io
- 루프
- wrapper
- maven
- 무한
- 언박싱
- 싱글턴
- https://start.spring.io
- boxing
- 제네릭
- Short
- 컬렉션
- 메소드
- Jenkins
- bootstrap
- suvlet
- 내장객체
- 스프링
- 박싱
- dependency
- unboxing
- Scanner
- 빌드
- 인텔리제이
- 콜렉션
- 싱글톤
- Today
- Total
목록K-DigitalTraining 강의/1. Java (102)
Developer Gonie
Try-with-resources 는 무엇인가? try에 자원 객체를 전달하면, try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능이다. 원래는 힙영역에 동적으로 할당된 자원이 사용되지 않는다면 가비지 컬렉터가 알아서 자원 회수를 하겠지만은 그래도 이 전에 close()로 자원을 회수시켜주면 더 좋을 것이다. 그래서 아래의 코드를 두번째 코드처럼 작성할 수 있다. Try-with-resources 가 적용되지 않은 코드 SomeResource resource = null; try { resource = getResource(); use(resource); } catch(...) { ... } finally { if (resource != null) { try { resource.close(); }..
* 상위 공간의 배치관리자를 null 로 변경해주면 여기에 속하는 하위 컴포넌트 요소에 대해 setBounds() 해줘야 보인다. // 상위 공간 Container contentPane = getContentPane(); // 상위공간에 속하게 될 하위 컴포넌트 요소들 table = new JTable(rowData, columnNames); scrollPane = new JScrollPane(table); // 상위 공간의 배치관리자를 null 로 변경해주면 여기에 속하는 하위 컴포넌트 요소에 대해 setBounds() 해줘야 보인다. contentPane.setLayout(null); scrollPane.setBounds(0, 0, 500, 200); contentPane.add(scrollPane);
import java.awt.Container; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; class Sub11 extends JFrame{ J..
table.txt 이름/국어/영어/수학 써니/33/44/55 윤아/66/77/22 수영/54/98/99 티파니/11/22/33 효연/99/88/77 예시코드 import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Vector; import jav..
* 크기가 변하지 않는 테이블의 정보를 읽어와 테이블을 만드는 경우 길이가 고정된 배열을 인자로 받는 JTable 클래스의 생성자를 이용해 만들 수 있지만, 만약 사이즈가 자주 변하는 파일에 저장되어있는 데이터를 읽어와 테이블을 만드는 경우에는 위 방식은 한계가 있을 수 밖에 없다. 이럴 때를 대비해서 JTable 클래스에는 벡터를 인자로 받는 생성자도 있는데 이는 99번 게시글을 참고하자. 예시코드 import java.awt.Container; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.JScrollPane; public class Ex12_09_JTable e..
* AWT의 Frame 을 사용할 때와 다르게, Swing의 JFrame 사용시에는 바로 컴포넌트를 올릴 수 없다. Swing의 JFrame 사용시에는 ContentPane을 얻어서 이 공간 위에 추가해야 한다. ContentPane 은 맨 위의 제목표시줄 X 혹은 최소화 버튼이 있는 줄을 제외한 아래의 공간을 의미함 * SWING의 JButton은 모양이 AWT의 Button과 다른 것을 볼 수 있다. 예제코드 // Swing 라이브러리를 사용하려면 awt를 같이 사용해야 함 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.a..
* 94번 게시글을 다시 보면 WindowEvent를 처리하기 위해 WindowListener 인터페이스를 implements시 총 7개의 미완성 메소드를 완성시켜야 한다. 사용할지 안할지도 모르는 미완성 메소드를 모두 완성시켜야하는 것은 번거로운 일 일 수 있다. 이 이유 때문에 Adapter 클래스를 제공하는데 이를 이용하면 사용할 메소드만 완성시키면 된다. 사용하는 방식은 아래와 같다. 기존의 경우 리스너를 등록하고 이벤트 핸들러에서 메소드를 완성시켜주었다면, 아답터 클래스를 사용하는 경우 리스너를 등록함과 동시에 아답터 객체를 생성하고 이 내부에서 이벤트를 핸들하는 메소드를 완성시킨다. 완성시키는 메소드는 잠시 기존의 경우대로 implements 해서 미완성 메소드를 확인한 후 필요한 메소드만 복..
예시코드 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class Sub88 extends Frame { Sub88(String title){ super(title); TextField text1 = new TextField(5); // 5글자가 보여지는 크기로 설정(5글자로 제한되는게 아님) TextField text2 = new TextField(5); TextField text3 = new TextField(5); setLayout(new FlowLayout()); add(text1); add(new Label("+")); add(text2); add(new Label("=")); ..
버튼에서 발생하는 이벤트 처리 예시 - Button은 클릭당하면 new ActionEvent 이벤트 객체를 발생시키고, 이를 계속 살펴주는건 ActionListener이다. import java.awt.*; import java.awt.event.*; // ActionListener 인터페이스를 위해 한 것 class Sub2 extends Frame implements ActionListener{ Button b1 = null; Button b2 = null; Button b3 = null; Button b4 = null; Sub2(String title){ super(title); super.setSize(400,300); /*버튼 객체 생성*/ b1 = new Button("노란색"); b2 = n..
import java.awt.*; class Sub1 extends Frame{ Sub1(String title){ super(title); // 부모의 생성자에 넘겨주면 제목을 보여지게 할 수 있음 super.setSize(400,300); //setSize(400,300); Button bt1 = new Button("bt1"); Button bt2 = new Button("bt2"); Button bt3 = new Button("bt3"); Button bt4 = new Button("bt4"); Button bt5 = new Button("bt5"); setLayout(new FlowLayout()); add(bt1); add(bt2); add(bt3); add(bt4); add(bt5); } }..
import java.awt.*; class Sub1 extends Frame{ Sub1(String title){ super(title); // 부모의 생성자에 넘겨주면 제목을 보여지게 할 수 있음 super.setSize(400,300); //setSize(400,300); Button east_bt = new Button("동쪽"); Button west_bt = new Button("서쪽"); Button south_bt = new Button("남쪽"); Button north_bt = new Button("북쪽"); Button center_bt = new Button("중앙"); setLayout(new BorderLayout()); // BorderLayout 사용시 아래와 같이 동서남북센..
* 컨테이너(Frame, Panel 등)에는 컴포넌트들이 어떻게 배치될지를 지정하기 위해 레이아웃을 선택해줄 수 있음 * 배치 관리자 지정은 생성자에서 아래 중 하나를 선택해서 지정해주면 됨 setLayout(new BorderLayout()); setLayout(new FlowLayout()); setLayout(new GridLayout(3,2)); // 인자 생략가능 * Frame의 디폴트 배치관리자 즉, 레이아웃은 BorderLayout으로 지정되어 있음(변경가능) * Panel의 디폴트 배치관리자 즉, 레이아웃은 FlowLayout으로 지정되어 있음(변경가능) FlowLayout GridLayout BorderLayout - West, East 지정을 생략하면 3분할로도 사용가능 - 지정을 따로..