package ch19;

import java.awt.BorderLayout;

import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.FlowLayout;
import java.io.File;
import java.io.IOException;

import javax.swing.JTextField;
import javax.swing.JButton;

public class Ch1904 extends JFrame
{

 private static final long serialVersionUID = 1L;

 private JPanel jContentPane = null;

 private JPanel jPanel1 = null;

 private Ch1904Panel jPanel2 = null;

 private JLabel jLabel = null;

 private JTextField jTextField = null;

 private JButton jButton = null;

 /**
  * This is the default constructor
  */
 public Ch1904()
 {
  super();
  initialize();
 }

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

 /**
  * This method initializes jContentPane
  *
  * @return javax.swing.JPanel
  */
 private JPanel getJContentPane()
 {
  if (jContentPane == null)
  {
   jContentPane = new JPanel();
   jContentPane.setLayout(new BorderLayout());
   jContentPane.add(getJPanel1(), BorderLayout.NORTH);
   jContentPane.add(getJPanel2(), BorderLayout.SOUTH);
  }
  return jContentPane;
 }

 /**
  * This method initializes jPanel1
  *  
  * @return javax.swing.JPanel
  */
 private JPanel getJPanel1()
 {
  if (jPanel1 == null)
  {
   jPanel1 = new JPanel();
   jLabel = new JLabel();
   jLabel.setText("JLabel");
   jPanel1.setLayout(new FlowLayout());
   jPanel1.add(jLabel, null);
   jPanel1.add(getJTextField(), null);
   jPanel1.add(getJButton(), null);
  }
  return jPanel1;
 }

 /**
  * This method initializes jPanel2
  *  
  * @return javax.swing.JPanel
  */
 private Ch1904Panel getJPanel2()
 {
  if (jPanel2 == null)
  {
   GridBagConstraints gridBagConstraints = new GridBagConstraints();
   gridBagConstraints.gridx = 0;
   gridBagConstraints.gridy = 0;

   jPanel2 = new Ch1904Panel();
   jPanel2.setLayout(new GridBagLayout());
   
   
  }
  return jPanel2;
 }

 /**
  * This method initializes jTextField
  *  
  * @return javax.swing.JTextField
  */
 private JTextField getJTextField()
 {
  if (jTextField == null)
  {
   jTextField = new JTextField();
   jTextField.setColumns(35);
  }
  return jTextField;
 }

 /**
  * This method initializes jButton
  *  
  * @return javax.swing.JButton
  */
 private JButton getJButton()
 {
  if (jButton == null)
  {
   jButton = new JButton();
   jButton.setText("열기");
   jButton.addActionListener(new java.awt.event.ActionListener()
   {
    public void actionPerformed(java.awt.event.ActionEvent e)
    {
     // TODO Auto-generated Event stub actionPerformed()
     JFileChooser j=new JFileChooser();
     //파일넣으면 0, 취소는 1;
     //int result = j.showDialog(null, "이미지화일열기");
     //System.out.println(result);
     
     j.showDialog(null, "이미지화일열기");
     
     File file = j.getSelectedFile();
     //파일이 null 일경우 에러남.
     //System.out.println(file.getName());
     if(file != null)
     {
      try
      {
       jPanel2.setImage(file);
      } catch (IOException e1)
      {
       // TODO 자동 생성된 catch 블록
       e1.printStackTrace();
      }
     }
     
    }
   });
   
   
  }
  return jButton;
 }

}  //  @jve:decl-index=0:visual-constraint="10,10"


********     Ch1904Panel.java    **********
package ch19;

import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class Ch1904Panel extends JPanel
{
 private BufferedImage image;
 
 private static final long serialVersionUID = 1L;

 public void setImage(File file) throws IOException
 {
  image = ImageIO.read(file);
  repaint();
  ImageIO.write(image, "gif", new File("D:\\study\\java\\Project\\sample\\src\\ch19\\button2.jpg"));
 }
 
 @Override
 protected void paintComponent(Graphics g)
 {
  // TODO 자동 생성된 메소드 스텁
  //Swing에서는 기존 그래픽내용 소거하려면
  //상위 클래스의 paintConponent메서드를 재호출해야 한다.
  super.paintComponent(g);
 
  if(image != null)
  {
   g.drawImage(image, 0, 0, this);  
  }
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize()
 {
  this.setSize(300, 200);
  this.setLayout(new GridBagLayout());
 }

}

Posted by 말없제이
,

package ch19;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.BoxLayout;

public class Ch1902 extends JFrame
{

 private static final long serialVersionUID = 1L;

 private JPanel jContentPane = null;

 private Ch1902Test jTextArea = null;

 /**
  * This is the default constructor
  */
 public Ch1902()
 {
  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 JPanel getJContentPane()
 {
  if (jContentPane == null)
  {
   jContentPane = new JPanel();
   jContentPane.setLayout(new BoxLayout(getJContentPane(), BoxLayout.X_AXIS));
   jContentPane.add(getJTextArea(), null);
  }
  return jContentPane;
 }

 /**
  * This method initializes jTextArea
  *  
  * @return javax.swing.JTextArea
  */
 private Ch1902Test getJTextArea()
 {
  if (jTextArea == null)
  {
   jTextArea = new Ch1902Test();
  }
  return jTextArea;
 }

}

*******  Ch1902Test.java      *******
package ch19;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JTextArea;

public class Ch1902Test extends JTextArea
{
 private BufferedImage image;
 
 public Ch1902Test()
 {
  try
  {
   image = ImageIO.read(new File("D:\\study\\java\\Project\\sample\\src\\ch21\\button1.jpg"));
  } catch (IOException e)
  {
   // TODO 자동 생성된 catch 블록
   e.printStackTrace();
  }   
 }
 
 @Override
 protected void paintComponent(Graphics g)
 {
  // TODO 자동 생성된 메소드 스텁
  super.paintComponent(g);
  //g.drawRect(80, 80, 100, 100);
  g.drawImage(image, 0, 0, this);
 }
}

Posted by 말없제이
,

파일 IO처리.

DevTool/Java 2009. 6. 17. 18:08

package ch19;

import java.io.*;

public class Ch1901
{
 public static void main(String[] args)
 {
  //File 클래스 : 특정화일에 대한 정보(크기,이름 등)에 대한정보를
  //얻을수 있는 메서드를 가지고있는 클래스로
  //생성자는 특정화일이나 폴더에 대한 문자열을 지정하면 됨
  //(단 화일의 내용을 고치는 것은 FIle클래스에서지원 되지 않으며
  //화일 입출력스트림을 사용해야 한다.
 
  File file = new File("D:\\study\\java\\Project\\sample\\src\\ch19\\button1.jpg");
  System.out.println("화일명 : "+file.getName());
  System.out.println("화일크기 : "+file.length());
  System.out.println("화일 유무  : "+file.exists());
  file.delete(); //실제 파일 삭제 주의
 
  file = new File("D:\\study\\java\\Project\\sample\\src\\ch21");
  String[] list = file.list();
  for(int i=0;i<list.length;i++)
  {
   System.out.println(list[i]);
  }
 }
}

Posted by 말없제이
,

package ch18;

public class Ch1802
{
 public Ch1802() throws Exception
 {
  // TODO 자동 생성된 생성자 스텁
//예외처리 상위로 넘김.
  run();
 }
 
 private void run() throws Exception
 {
  // TODO 자동 생성된 메소드 스텁
//상위 인 Ch1802로 넘김.
  int a=0/0;
 }


 public static void main(String[] args)
 {
  try
  {
   new Ch1802();
  } catch (Exception e)
  {
   // TODO 자동 생성된 catch 블록
   e.printStackTrace();
  }
 }
}

Posted by 말없제이
,

package ch18;

public class Ch1801
{
 public static void main(String[] args)
 {
  try
  {
   //예외가 발생할 수도 있는 프로그램문장을 기술
   int a=0/0;
   // 예외처리대상은 문법에러를 대상으로 하지 않는다.
   //System.out.println(b);
   
  }
  catch (Exception e)
  {
   // TODO: handle exception
   //try안의 구문을 실행했을 경우 예외가 발생할 경우
   //처리해야 하는 문장들을 기술
   System.out.println("에러가 놨슈~");
   //e.printStackTrace();
  }
  finally
  {
   //예외가 발생하는 안하든 처리해야 하는 구문을 기술
   System.out.println("종료");
  }
 
 }
}

Posted by 말없제이
,

package ch17;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;

public class Ch1701 extends JFrame {

 private static final long serialVersionUID = 1L;

 private Ch1701Panel jContentPane = null;

 /**
  * This is the default constructor
  */
 public Ch1701() {
  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 Ch1701Panel getJContentPane() {
  if (jContentPane == null) {
   jContentPane = new Ch1701Panel();
   jContentPane.setLayout(new BorderLayout());
  }
  return jContentPane;
 }

}

******** Ch1701Panel.java *****
package ch17;

import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JPanel;
import javax.tools.Tool;

public class Ch1701Panel extends JPanel {

 private static final long serialVersionUID = 1L;

 //이미지를 저장할 이미지 멤버변수 선언
 private Image image;
 /**
  * This is the default constructor
  */
 public Ch1701Panel() {
  super();
  image=Toolkit.getDefaultToolkit().getImage("D:\\study\\java\\Project\\sample\\src\\ch17\\sering.jpg");
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  this.setSize(300, 200);
  this.setLayout(new GridBagLayout());
 }

 //swing은 애니메이션시 잔상남아서 해결하는 방법. 아래.
 @Override
 protected void paintComponent(Graphics g) {
  // TODO 자동 생성된 메소드 스텁
  super.paintComponent(g);
  g.drawImage(image, 0, 0, this);
 }
}

Posted by 말없제이
,

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 말없제이
,

package ch11;

import java.awt.Frame;
import java.awt.Label;
import java.awt.Rectangle;
import java.awt.Button;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Ch1106 extends Frame {

 private static final long serialVersionUID = 1L;
 private Label label1 = null;
 //서브윈도우에서 접근할 수도록 하기 위해...
 public TextField txtId = null;
 private Button button1 = null;
 
 //서브윈도우에 전달할 클래스 자기자신을 멤버변수로
 //선언
 private Ch1106 main;
 /**
  * This is the default constructor
  */
 public Ch1106() {
  super();
  //클래스 자기자신을 멤버변수main에 대입
  main=this;
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  label1 = new Label();
  label1.setBounds(new Rectangle(18, 43, 45, 23));
  label1.setText("아이디");
  this.setLayout(null);
  this.setSize(300, 200);
  this.setTitle("메인윈도우");

  this.setVisible(true);
  this.add(label1, null);
  this.add(getTxtId(), null);
  this.add(getButton1(), null);
  this.addWindowListener(new WindowAdapter() {
   @Override
   public void windowClosing(WindowEvent e) {
    // TODO 자동 생성된 메소드 스텁
    dispose();
   }
  });
 }

 /**
  * This method initializes txtId
  *  
  * @return java.awt.TextField
  */
 private TextField getTxtId() {
  if (txtId == null) {
   txtId = new TextField();
   txtId.setBounds(new Rectangle(73, 45, 128, 23));
   txtId.setEditable(false);
  }
  return txtId;
 }

 /**
  * This method initializes button1
  *  
  * @return java.awt.Button
  */
 private Button getButton1() {
  if (button1 == null) {
   button1 = new Button();
   button1.setBounds(new Rectangle(213, 45, 58, 23));
   button1.setLabel("ID검사");
   button1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     // TODO 자동 생성된 메소드 스텁
     new Ch1106sub(main);
    }
   });
  }
  return button1;
 }

}

****** Ch1106sub.java *******
package ch11;

import java.awt.Frame;
import java.awt.Label;
import java.awt.Rectangle;
import java.awt.Button;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Ch1106sub extends Frame {

 private static final long serialVersionUID = 1L;
 private Label label1 = null;
 private TextField txtId = null;
 private Button button1 = null;
 //메인윈도우를 보관할 멤버변수의 선언
 private Ch1106 main;
 /**
  * This is the default constructor
  */
 public Ch1106sub() {
  super();
 }
 
 public Ch1106sub(Ch1106 main)
 {
  //인자없는 생성자 호출
  this();
  //메인윈도우개체를 멤버변수에 보관
  this.main=main;
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  label1 = new Label();
  label1.setBounds(new Rectangle(18, 43, 45, 23));
  label1.setText("아이디");
  this.setLayout(null);
  this.setSize(300, 200);
  this.setTitle("서브윈도우");

  this.setVisible(true);
  this.add(label1, null);
  this.add(getTxtId(), null);
  this.add(getButton1(), null);
  this.addWindowListener(new WindowAdapter() {
   @Override
   public void windowClosing(WindowEvent e) {
    // TODO 자동 생성된 메소드 스텁
    dispose();
   }
  });
 }

 /**
  * This method initializes txtId
  *  
  * @return java.awt.TextField
  */
 private TextField getTxtId() {
  if (txtId == null) {
   txtId = new TextField();
   txtId.setBounds(new Rectangle(73, 45, 128, 23));
  }
  return txtId;
 }

 /**
  * This method initializes button1
  *  
  * @return java.awt.Button
  */
 private Button getButton1() {
  if (button1 == null) {
   button1 = new Button();
   button1.setBounds(new Rectangle(213, 45, 58, 23));
   button1.setLabel("ID검사");
   button1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     // TODO 자동 생성된 메소드 스텁
     //메인윈도우의 id에 현재 서브윈도우의 id의 값을 대입
     main.txtId.setText(txtId.getText());
     dispose();
    }
   });
  }
  return button1;
 }

}

Posted by 말없제이
,

package ch11;

import java.awt.Frame;
import java.awt.Dimension;
import java.awt.Button;
import java.awt.Rectangle;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Ch1105 extends Frame implements ActionListener
{

 private static final long serialVersionUID = 1L;
 private Button button1 = null;
 private Button button2 = null;
 private Button button3 = null;
 private TextArea textArea = null;
 /**
  * This is the default constructor
  */
 public Ch1105() {
  super();
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  this.setLayout(null);
  this.setSize(351, 229);
  this.setTitle("Frame");

  this.add(getButton1(), null);
  this.add(getButton2(), null);
  this.add(getButton3(), null);
  this.add(getTextArea(), null);
 }

 /**
  * This method initializes button1
  *  
  * @return java.awt.Button
  */
 private Button getButton1() {
  if (button1 == null) {
   button1 = new Button();
   button1.setBounds(new Rectangle(20, 40, 91, 31));
   button1.setLabel("내용1");
   //클래스 자신이 ActionListener인터페이스의 하위 클래스이므로.
   button1.addActionListener(this);
  }
  return button1;
 }

 /**
  * This method initializes button2
  *  
  * @return java.awt.Button
  */
 private Button getButton2() {
  if (button2 == null) {
   button2 = new Button();
   button2.setBounds(new Rectangle(140, 40, 81, 31));
   button2.setLabel("내용2");
   button2.addActionListener(this);
  }
  return button2;
 }

 /**
  * This method initializes button3
  *  
  * @return java.awt.Button
  */
 private Button getButton3() {
  if (button3 == null) {
   button3 = new Button();
   button3.setBounds(new Rectangle(250, 40, 81, 31));
   button3.setLabel("내용3");
   button3.addActionListener(this);
  }
  return button3;
 }

 /**
  * This method initializes textArea
  *  
  * @return java.awt.TextArea
  */
 private TextArea getTextArea() {
  if (textArea == null) {
   textArea = new TextArea();
   textArea.setBounds(new Rectangle(20, 91, 311, 120));
  }
  return textArea;
 }

 public void actionPerformed(ActionEvent e) {
  // TODO 자동 생성된 메소드 스텁
  //이벤트 클래스의 getSource메서드는
  //이벤트가 발생한 진원지 컴포넌트를 반환.
  Button b = (Button)e.getSource();
  textArea.append(b.getLabel()+"\r\n");
 
 }

}  //  @jve:decl-index=0:visual-constraint="10,10"

Posted by 말없제이
,

package ch11;

import java.awt.Frame;
import java.awt.Label;
import java.awt.Rectangle;
import java.awt.TextField;
import java.awt.Button;
import java.awt.TextArea;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;

public class Ch1104 extends Frame {

 private static final long serialVersionUID = 1L;
 //키포인트 == 어너미클래스는 멤버변수때문에 접근이 가능....
 private Label label1 = null;
 private TextField textname = null;
 private Button button1 = null;
 private TextArea text = null;
 /**
  * This is the default constructor
  */
 public Ch1104() {
  super();
  initialize();
 }

 /**
  * This method initializes this
  *
  * @return void
  */
 private void initialize() {
  label1 = new Label();
  label1.setText("이름");
  label1.setBounds(new Rectangle(10, 30, 51, 21));
  this.setLayout(null);
  this.setSize(300, 200);
  this.setTitle("Frame");

  this.add(label1, null);
  this.add(getTextname(), null);
  this.add(getButton1(), null);
  this.add(getText(), null);
 }

 /**
  * This method initializes textname
  *  
  * @return java.awt.TextField
  */
 private TextField getTextname() {
  if (textname == null) {
   textname = new TextField();
   textname.setBounds(new Rectangle(70, 30, 161, 21));
  }
  return textname;
 }

 /**
  * This method initializes button1
  *  
  * @return java.awt.Button
  */
 private Button getButton1() {
  if (button1 == null) {
   button1 = new Button();
   button1.setLabel("추가");
   button1.setBounds(new Rectangle(240, 30, 50, 21));
   button1.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {
     // TODO 자동 생성된 메소드 스텁
     //getText를 사용하면 입력값을 얻어올 수 있다.
     //System.out.println(textname.getText());
     String value=textname.getText();
     //setText를 사용하면 컴포넌트에 값을 대입할 수 있다.
     //text.setText(value);
     //TextArea에서는 append가 지원됨.
     //★ Anonymous Class는 메인클래스의 멤버변수의 접근이 자유롭다.
     text.append(value+"\r\n");
     textname.setText("");
    }});
  }
  return button1;
 }

 /**
  * This method initializes text
  *  
  * @return java.awt.TextArea
  */
 private TextArea getText() {
  if (text == null) {
   text = new TextArea();
   text.setName("textarea");
   text.setBounds(new Rectangle(10, 60, 281, 131));
  }
  return text;
 }

}  //  @jve:decl-index=0:visual-constraint="77,6"

Posted by 말없제이
,