안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2011년 8월 14일 일요일

[단어장] Source - Dictionary.java


package dictionary;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class Dictionary {
JFrame frame;
JPanel English;
JPanel Meaning;
JPanel Save;
JLabel word;
JTextField eword = null;
JLabel mean;
JTextArea emean = null;
JButton save;
JButton ok;
JButton delete;
boolean isNew = true;

//Table
static DTable table = new DTable();
Dictionary() {
}

Dictionary(String name, String mean) {
eword = new JTextField(20);
eword.setText(name);
emean = new JTextArea(10, 20);
emean.setText(mean);
isNew = false;
}

public static void main(String[] args) {
table.showWords();
}

public void createAndShowGUI() {
// Frame
frame = new JFrame("Dictionary");
English = new JPanel();
Meaning = new JPanel();
Save = new JPanel();
word = new JLabel("영어");
if (eword == null)
eword = new JTextField(20);
mean = new JLabel(" 뜻 ");
if (emean == null)
emean = new JTextArea(10, 20);

// add Panel
English.add(word);
English.add(eword);
Meaning.add(mean);
Meaning.add(emean);

// add Button
if (isNew == true) {
save = new JButton("Save");
save.addActionListener(new SaveListener());
ok = new JButton("Cancel");
ok.addActionListener(new OkListener());
Save.add(save);
Save.add(ok);
}else
{
delete = new JButton("Delete");
delete.addActionListener(new DeleteListener());
JButton ok = new JButton("OK");
ok.addActionListener(new OkListener());
Save.add(delete);
Save.add(ok);
}
frame.getContentPane().add(BorderLayout.NORTH, English);
frame.getContentPane().add(BorderLayout.CENTER, Meaning);
frame.getContentPane().add(BorderLayout.SOUTH, Save);
frame.pack();
frame.setVisible(true);
}

class OkListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
frame.setVisible(false);
table.getTable().getSelectionModel().clearSelection();
}
}

class DeleteListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String ew = eword.getText();
String em = emean.getText();

D_DB.DeleteWord(ew);

frame.setVisible(false);
int row = table.getTable().getSelectionModel()
.getLeadSelectionIndex();

table.getDModel().removeRow(row);
table.getTable().getSelectionModel().clearSelection();
}
}

class SaveListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String ew = eword.getText();
String em = emean.getText();

if (Error.ECheck(ew) == false) {
D_DB.insertWord(ew, em, 1);

D_DB.showTable();

System.out.println(ew + " " + em);

frame.setVisible(false);
DefaultTableModel model = table.getDModel();
model.addRow(new Object[] { ew });
} else {
JOptionPane.showMessageDialog(null, "'영어'란에 영어만 입력하세요");
}

}
}

}

 단어장에 단어를 입력하는 폼을 만든 것이다.

 Frame 과 Panel을 이용해서 구성되어 있다. 

 createAndShowGUI() Method에서 구현하고 있다.

 frame 을 만들고 거기에 English 와 Meaning 패널을 집어 넣는다.

 English 패널에는 word JLabel과 eword JTextField를 집어 넣어서 

 영어 단어를 적게 만들었고

 Meaning 필드에는 JLabel 과 JTextAread를 이용해서 뜻을 넣도록

 하였다. 

 그리고 사실 이 동일 클래스에서 두가지 상황을 가능하게 만들었다.

 그래서 만약 입력 하는 단계라면 버튼이 Save 와 Cancel이 나오게

 함과 동시에 단어 입력을 가능하게 하였다. 반면 입력하는 단계가

 아닐 경우 (단어장에서 해당 단어를 클릭 했을 때) 그 단어의 영어
 
 와 뜻을 보여줌과 동시에 삭제 기능과 확인 기능 (Delete 와 OK) 버튼

 을 넣도록 구현 하였다. 

 Listener에서 관련 내용을 다루고 있다
 

댓글 없음:

댓글 쓰기