190503_Day19 복습, MVC다른방법, IO


MVC Model2

전체 프로그램 제어
시각담당 분석
요청 응답 데이터 분석
View Controller

<============inputForm.setVisible(true);

=========================================

​ ==>>selectAll();

​ <=====Vector

[입력폼]입력요청 ==>> Store 저장 필요!
Person p = new Person(
tf_name.getText()
tf_age.getText()
tf_job.getText()
getText());==>> insert(Person p);
==>>selectAll()
<<==Vector
<<== JTable 갱신
DisplayTable(벡터)
<<==입력된 결과를 보여주기
메인의 JTable
mainView.setVisuable(true);
[메인뷰]수정요청 ==>> (데이터 출력된) 수정폼 필요
int row = table.getSelectedRow()
//첫행선택 : 0, 두번째 선택 1
int no = table.getValueAt(row, 0); =>> select(int no)
<== Person p
upForm.tf_name.setText(p.getName())
upForm.tf_age.setText(p.getAge())
upForm.tf_job.setText(p.getJob())
<==이전데이터를 한개 보여주기!!
upForm.setVisible(true);
[메인뷰]삭제요청==>> Store 삭제 필요!
int no = showInputDialog("삭제정보 : ")
int state = showConfirmdialog("정말삭제?")
==>>delete(int no);

IO

  • 어렵다

    • 왜? 생전보는 클래스들의 이름, 거기다가 길어..
  • 스트림!(시냇가, 파이프)이 기본!

    • 8bit(1byte)로 구성된 데이터의 흐름
  • 입출력 4대 클래스( 추상클래스 : 입출력의 특성이 되는 부모 클래스 )

    • | | byte단위 | 문자단위 | 대표메소드 |
      | ---- | ------------ | -------- | ---------- |
      | 입력 | InputStream | Reader | read() |
      | 출력 | OutputStream | Writer | write() |
      | | | | |
  • ASCIIGetBytesTest
package j0503;

public class ASCIIGetBytesTest
{

    public static void main(String[] args)
    {
        String str = "hi java Stream!!!!";
        byte []b = str.getBytes();
        for (int i = 0; i < b.length; i++)
        {
            System.out.write(b[i]);
            if(i%3==2)System.out.write('\n');
        }

    }

}
  • 출력객체들은 flush() 메도드를 갖음 ( 참조 : 입력객체들은 flush()메소드 없음)
  • flush()는 버퍼(임시저장소)가 비우는 열할(버퍼의 내용을 push하는 역할)
  • case1
    • JTable table = new JTable;
  • case2
    • DefaultTableModel dtm = new DefaultTableModel();
    • JTable table = new JTable(dtm);
  • case3
    • 나는 파일을 읽고 싶습니다.
    • FileReader fr = new FileReader( "song.txt ");
  • case4
    • 나는 파일을 읽고 싶습니다.
    • File f = new File("song.txt");
    • FileReader fr = new FileReader(f);

<경로표현방법>

  • 전체 경로(드라이브명과 중간 폴더경로 전체, 절대경로)
  • 상대 경로
  • 생략된 경로
  • 자바의 경로는 이 중 '전체경로'가 기본!
    • ImageIcon("경로");
    • ImageIcon("image/left.gif"); //이클립스 프로젝트 중 자바에서만 가능
  • 자바의 경로안의 문자는 대소문자를 구분하지 않음
//mission

package j0503;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class SimpleNotePad  extends JFrame  implements ActionListener 
{
    JTextArea ta;
    JScrollPane scroll_ta;

    JMenuBar bar;
    JMenu menu_file,menu_help;
        JMenuItem item_open;
        JMenuItem item_save;
        JMenuItem item_exit;

    JFileChooser chooser;

    public SimpleNotePad()
    {
        setTitle("자바메모장");

        chooser = new JFileChooser();

        bar = new JMenuBar();
            menu_file = new JMenu( " File " );
                item_open = new JMenuItem("열기");
                item_save = new JMenuItem("저장");
                item_exit = new JMenuItem("종료");

            menu_file = new JMenu( " File " );
            menu_help = new JMenu( " Help " );

            menu_file.add(item_open);
            menu_file.add(item_save);
            menu_file.addSeparator();//구분선 추가
            menu_file.add(item_exit);

            bar.add(menu_file);
            bar.add(menu_help);

            setJMenuBar(bar);

        ta = new JTextArea();
        scroll_ta = new JScrollPane(ta);

        add("Center", scroll_ta);

        setBounds(400, 300, 600, 600);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        item_open.addActionListener(this);
        item_save.addActionListener(this);
        item_exit.addActionListener(this);
    }//생성자


    //FROM : 파일을 읽어서 = > to : TextArea
    //채워 넣기
    public void openFile() 
    {
        chooser.showOpenDialog(this);
        String filePath = chooser.getSelectedFile().getPath();
//        System.out.println(filePath); 주소 출력 잘됨

//        FileReader fr = new FileReader(filePath);
//        FileReader fr = FileReader(address);
//        ta.setText(t);
    }


    //FROM : TextArea = > to : file에 출력
    public void saveFile() throws IOException
    {
        chooser.showSaveDialog(this);
        String copy = ta.getText();
        //FileReader fr = new FileReader("aabbcc");  (X)
        //FileReader fr = new FileReader("abc.txt"); (O)
        FileWriter fw = new FileWriter(chooser.getSelectedFile().getPath());
        //FileWriter fw = new FileWriter("c:/aa/bb/cc.txt");

        //FileWriter fw = new FileWriter(chooser.getSelectedFile());
        //FileWriter fw = new FileWriter(new File("c:/aa/bb/cc.txt"));

            fw.write(copy);

        fw.close();
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        Object ob = e.getSource();
        if(ob == item_open)
        {
            openFile();
        }else if(ob == item_save)
        {
            try
            {
                saveFile();
            } catch (IOException e1)
            {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }else if (ob == item_exit)
        {
            System.exit(0);
        }

    }
    public static void main(String[] args)
    {
        new SimpleNotePad();
    }


}

+ Recent posts