package ch14;

import java.awt.Graphics;

import javax.swing.JPanel;

public class Ch1402Panel extends JPanel
{
 public Ch1402Panel()
 {
  // TODO 자동 생성된 생성자 스텁
  super();
  setVisible(true);
 }
 
 @Override
 protected void paintComponent(Graphics g) {
  // TODO 자동 생성된 메소드 스텁
  //부모에 있는 코딩도 돌리고 자신도 돌린다..
  super.paintComponent(g);
  g.drawRect(50, 50, 150, 100);
 }
}


******* Ch1401_AWT.java *******
package ch14;

import java.awt.Frame;
import java.awt.Graphics;

public class Ch1401_AWT extends Frame {

 private static final long serialVersionUID = 1L;

 //오버라이드..
 @Override
 public void paint(Graphics g) {
  // TODO 자동 생성된 메소드 스텁
  super.paint(g);
  g.drawRect(50,50,50,100);
 
 }
 
 /**
  * This is the default constructor
  */
 public Ch1401_AWT() {
  super();
  initialize();
 }
 

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  this.setSize(300, 200);
  this.setTitle("Frame");

 }

}

********* Ch1402_Swing.java ********
package ch14;

import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.JPanel;
import javax.swing.JFrame;

public class Ch1402_Swing extends JFrame {

 private static final long serialVersionUID = 1L;

 private Ch1402Panel jContentPane = null;

 //컴포넌트위에 강제로 덮어씀. 될수있음 swing은 paint로 override하지 않음.
 @Override
 public void paint(Graphics g) {
  // TODO 자동 생성된 메소드 스텁
  super.paint(g);
  g.drawRect(50, 50, 100, 50);
 }
 
 
 /**
  * This is the default constructor
  */
 public Ch1402_Swing() {
  super();
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  this.setSize(300, 200);
  this.setContentPane(getJContentPane());
  this.setTitle("JFrame");
 }

 /**
  * This method initializes jContentPane
  *
  * @return javax.swing.JPanel
  */
 private Ch1402Panel getJContentPane() {
  if (jContentPane == null) {
   jContentPane = new Ch1402Panel();
   jContentPane.setLayout(new BorderLayout());
  }
  return jContentPane;
 }

}

Posted by 말없제이
,