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에서 관련 내용을 다루고 있다
댓글 없음:
댓글 쓰기