IT/자바
익명클래스 설명
Beautifulkim
2018. 5. 9. 17:37
package mymain; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; // awt -> 확장 -> swing // Frame JFrame public class MyMain_MemberInner extends JFrame { //멤버로써의 내부클래스 // WindowListener : 윈도우 이벤트 처리 객체 class MyWindowLisner implements WindowListener { @Override public void windowOpened(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } @Override public void windowClosing(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 System.exit(0); } @Override public void windowClosed(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } @Override public void windowIconified(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } @Override public void windowDeiconified(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } @Override public void windowActivated(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } @Override public void windowDeactivated(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 } } //------------------------------------------------------내부클래스 영역 public MyMain_MemberInner() { super("내가만든 윈도우"); //위치 //this.setLocation(200, 100); //크기지정 //this.setSize(400, 300); //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.addWindowListener(new MyWindowLisner()); } public static void main(String[] args) { new MyMain_MemberInner(); } }
package mymain; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; // awt -> 확장 -> swing // Frame JFrame public class MyMain_MemberInner2 extends JFrame { //윈도우 이벤트 처리객체 class MyWindowAdapter extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 super.windowClosing(e); } } public MyMain_MemberInner2() { super("내가만든 윈도우"); //위치 //this.setLocation(200, 100); //크기지정 //this.setSize(400, 300); //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //this.addWindowListener(new MyWindowAdapter()); 아래 코드는 풀어 놓은 것 WindowListener listener = new MyWindowAdapter(); this.addWindowListener(listener); } public static void main(String[] args) { new MyMain_MemberInner2(); } }
package mymain; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; // awt -> 확장 -> swing // Frame JFrame public class MyMain_LocalInner extends JFrame { public MyMain_LocalInner() { super("내가만든 윈도우"); //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //이벤트처리객체 선언 class MyWindowAdapter extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { //super.windowClosing(e); System.exit(0); } } this.addWindowListener(new MyWindowAdapter()); } public static void main(String[] args) { new MyMain_LocalInner(); } } /* 추상 클래스, 인터페이스 : 객체생성 못하게 설계됨 이벤트 처리 인터페이스 XxxListener 해당인터페이스를 미리 재정의해놓은 추상클래스 (객체생성을 못하게끔 설계해놓은 것 : 추상클래스) XxxAdapter */
package mymain; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; // awt -> 확장 -> swing // Frame JFrame //원칙적인 방법 interface TestInter { void sub(); } class MyTestInterImpl implements TestInter { @Override public void sub() { // TODO 자동 생성된 메소드 스텁 } } public class MyMain_Anonymous extends JFrame { public MyMain_Anonymous() { super("내가만든 윈도우"); //인터페이스 익명클래스(객체생성과 동시에 재정의한 무명클래스) TestInter inter = new TestInter() { @Override public void sub() { // TODO 자동 생성된 메소드 스텁 } }; //위치 //this.setLocation(200, 100); //크기지정 //this.setSize(400, 300); //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* class MyWindowAdapter extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { //super.windowClosing(e); System.exit(0); } } this.addWindowListener(new MyWindowAdapter()); */ /* 추상 클래스와 인터페이스는 객체생성을 못하지만 재정의를 하면 객체생성을 할 수 있음. */ /* new WindowAdapter() { }; */ //익명클래스이면서 내부 클래스인 익명내부클래스 /* WindowListener listener = new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }; this.addWindowListener(listener); */ this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 지저분한 방법 Start WindowListener listener = new WindowListener() { @Override public void windowOpened(WindowEvent e) {} @Override public void windowIconified(WindowEvent e) {} @Override public void windowDeiconified(WindowEvent e) {} @Override public void windowDeactivated(WindowEvent e) {} @Override public void windowClosing(WindowEvent e) {} @Override public void windowClosed(WindowEvent e) {} @Override public void windowActivated(WindowEvent e) {} }; // 지저분한 방법 End } public static void main(String[] args) { new MyMain_Anonymous(); } } /* this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // TODO 자동 생성된 메소드 스텁 System.exit(0); } }); */
package mymain; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; //JPanel : border가 없는 그냥 판만 있는 것 (JFrame위에 올린것) class GamePan extends JPanel { Font font = new Font("굴림체", Font.BOLD, 30); //paintComponent : 게임판에 그리는 목적 @Override protected void paintComponent(Graphics g) { // TODO 자동 생성된 메소드 스텁 //super.paintComponent(g); g.setFont(font); g.drawString("오늘은 여기까지...", 50, 50); g.setColor(Color.RED); g.drawString("오늘은 여기까지...", 50-1, 50-2); } } public class MyMain_Anonymous2 extends JFrame { JPanel gamePan; public MyMain_Anonymous2() { super("내가만든 윈도우"); gamePan=new GamePan(); this.add(gamePan,"Center"); //위치 //this.setLocation(200, 100); //크기지정 //this.setSize(400, 300); //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MyMain_Anonymous2(); } }
package mymain; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; // awt -> 확장 -> swing // Frame JFrame public class MyMain_Anonymous3 extends JFrame { JPanel gamePan; public MyMain_Anonymous3() { super("내가만든 윈도우"); //아래것과 똑같은 개념 //class Game extends JPanel{} //게임판 중앙에 넣는다. //1회성 //객체생성과 동시에 재정의하면 익명클래스가 된다 gamePan = new JPanel() { @Override protected void paintComponent(Graphics g) { g.drawString("정말 끝", 10, 50); } }; this.add(gamePan); /* gamePan = new JPanel() { @Override protected void paintComponent(Graphics g) { //super.paintComponent(g); Font font= new Font("굴림체",Font.BOLD,18); g.setFont(font); g.drawString("오늘은 여기까지", 50, 200); g.setColor(Color.red); g.drawString("오늘은 여기까지", 50-2, 200); } }; this.add(gamePan,"Center"); */ //위치 + 크기정보 this.setBounds(200, 100, 400, 300); //보여줘라 this.setVisible(true); //종료코드 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MyMain_Anonymous3(); } }