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() |
| | | | |
- | | byte단위 | 문자단위 | 대표메소드 |
- 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();
}
}
'클라우드 기반 웹 개발자 과정 공부 > JAVA' 카테고리의 다른 글
190508_Day21 복습, java.net (0) | 2019.05.08 |
---|---|
190507 복습, 스레드, 수정 필요 (0) | 2019.05.07 |
190502_Day18 MVC Model2 (0) | 2019.05.02 |
190430_Day17 숫자야구게임, Swing (0) | 2019.04.30 |
190429_Day16 복습, Swing (0) | 2019.04.29 |