import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Print extends JPanel implements ActionListener
{
JPanel printPanel1, printPanel2;
JTextArea printArea1, printArea2;
JLabel printLabel1, printLabel2;
JButton bt1, bt2, bt3,bt4,bt5,bt6,bt7;
JScrollPane scroll1,scroll2,scroll3,scroll4,scroll5;
JTable table1, table2, table3, table4;
String str1,str2="",value;
int row,col;
int index=1;
// JTableModel model;
DataModel dm;
PersistenceManager pm = new PersistenceManager();
Vector totalPrice = new Vector();
Vector insertDBmcode = new Vector();
Vector insertDBamount = new Vector();
Vector insertDBmname = new Vector();
Vector insertDBmprice = new Vector();
public Print()
{
this.setLayout(null);
this.setBounds(200,100,400,600);
this.setBackground(Color.white);
printPanel1=new JPanel();
printPanel1.setLayout(null);
printPanel1.setBounds(10,10,370,40);
printPanel1.setBackground(Color.white);
bt1=new JButton("appetizer");
bt1.setBounds(5,5,90,30);
bt1.setBackground(Color.white);
bt1.addActionListener(this);
bt2=new JButton("main");
bt2.setBounds(95,5,90,30);
bt2.setBackground(Color.white);
bt2.addActionListener(this);
bt3=new JButton("dessert");
bt3.setBounds(185,5,90,30);
bt3.setBackground(Color.white);
bt3.addActionListener(this);
bt4=new JButton("drink");
bt4.setBounds(275,5,90,30);
bt4.setBackground(Color.white);
bt4.addActionListener(this);
printPanel1.add(bt1);
printPanel1.add(bt2);
printPanel1.add(bt3);
printPanel1.add(bt4);
selectMenuType(index);
table1=new JTable(dm);
scroll1 = new JScrollPane(table1);//텍스트영역에 스크롤바 달기
scroll1.getVerticalScrollBar().setValue (scroll1.getVerticalScrollBar().getMaximum());
scroll1.setBounds(10,50,370,200);
scroll1.setBorder(new TitledBorder(new EtchedBorder(),"Menu"));
scroll1.setBackground(Color.white);
scroll1.validate(); //최근값으로 스크롤바 이동하기.
TableColumn column = null;
for(int i=0;i
column = table1.getColumnModel().getColumn(i);
if(i==1) column.setPreferredWidth(150); // default width is 75.
else column.setPreferredWidth(30);
}
TableColumn lastNameColumn = table1.getColumnModel().getColumn(3);
JTextField tf = new JTextField();
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JTextField) value=((JTextField)o).getText();
row = table1.getSelectedRow();
col = table1.getSelectedColumn();
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){//수량에 0적지않으면 실행됨
if(dm.getValueAt(row,1).toString().length()>7){
str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
}else str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
dm.fireTableCellUpdated(row, col);
}
}
});
lastNameColumn.setCellEditor(new DefaultCellEditor(tf));
printPanel2=new JPanel();
printPanel2.setLayout(null);
printPanel2.setBounds(10,250,370,40);
printPanel2.setBackground(Color.white);
bt5=new JButton("주문");
bt5.setBounds(5,5,120,30);
bt5.setBackground(Color.cyan);
bt5.addActionListener(this);
bt6=new JButton("취소");
bt6.setBounds(125,5,120,30);
bt6.setBackground(Color.yellow);
bt6.addActionListener(this);
bt7=new JButton("주문완료");
bt7.setBounds(245,5,120,30);
bt7.setBackground(Color.green);
bt7.addActionListener(this);
printPanel2.add(bt5);
printPanel2.add(bt6);
printPanel2.add(bt7);
printArea2=new JTextArea(6,32);
scroll5 = new JScrollPane(printArea2);
scroll5.getVerticalScrollBar().setValue (scroll5.getVerticalScrollBar().getMaximum());
scroll5.setBounds(10,290,370,150);
scroll5.setBorder(new TitledBorder(new EtchedBorder(),"Order"));
scroll5.setBackground(Color.white);
str1="메뉴 가격 수량
";
printArea2.setText(str1);
scroll5.validate();
add(printPanel1);
add(scroll1);
add(printPanel2);
add(scroll5);
}
public void selectMenuType(int i){//검색할 매뉴파트
try{
ResultSet rs = pm.executeSQL("select * from menulist where m_part_no =" + i);
dm = new DataModel(rs);
}catch(Exception ex){}
}
public static void main(String[] args){
show1();
}
public void actionPerformed(ActionEvent e)
{
JButton jb=(JButton) e.getSource();
if (jb==bt1)
{
dm.rows.clear();
remove(1);
selectMenuType(index);
table1=new JTable(dm);
scroll1 = new JScrollPane(table1);//텍스트영역에 스크롤바 달기
scroll1.getVerticalScrollBar().setValue (scroll1.getVerticalScrollBar().getMaximum());
scroll1.setBounds(10,50,370,200);
scroll1.setBorder(new TitledBorder(new EtchedBorder(),"Menu"));
scroll1.setBackground(Color.white);
scroll1.validate(); //최근값으로 스크롤바 이동하기.
TableColumn column = null;
for(int i=0;i
column = table1.getColumnModel().getColumn(i);
if(i==1) column.setPreferredWidth(150); // default width is 75.
else column.setPreferredWidth(30);
}
TableColumn lastNameColumn = table1.getColumnModel().getColumn(3);
JTextField tf = new JTextField();
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JTextField) value=((JTextField)o).getText();
row = table1.getSelectedRow();
col = table1.getSelectedColumn();
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){//수량에 0적지않으면 실행됨
if(dm.getValueAt(row,1).toString().length()>7){
str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
}else str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
dm.fireTableCellUpdated(row, col);
}
}
});
lastNameColumn.setCellEditor(new DefaultCellEditor(tf));
add(scroll1,1);
}
else if (jb==bt2)
{
dm.rows.removeAllElements ();
remove(1);
selectMenuType(index+1);
table2=new JTable(dm);
scroll2 = new JScrollPane(table2);//텍스트영역에 스크롤바 달기
scroll2.getVerticalScrollBar().setValue (scroll2.getVerticalScrollBar().getMaximum());
scroll2.setBounds(10,50,370,200);
scroll2.setBorder(new TitledBorder(new EtchedBorder(),"Menu"));
scroll2.setBackground(Color.white);
scroll2.validate(); //최근값으로 스크롤바 이동하기.
TableColumn column = null;
for(int i=0;i
column = table2.getColumnModel().getColumn(i);
if(i==1) column.setPreferredWidth(150); // default width is 75.
else column.setPreferredWidth(30);
}
TableColumn lastNameColumn = table2.getColumnModel().getColumn(3);
JTextField tf = new JTextField();
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JTextField) value=((JTextField)o).getText();
row = table2.getSelectedRow();
col = table2.getSelectedColumn();
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){//수량에 0적지않으면 실행됨
if(dm.getValueAt(row,1).toString().length()>7){
str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
}else str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
dm.fireTableCellUpdated(row, col);
}
}
});
lastNameColumn.setCellEditor(new DefaultCellEditor(tf));
add(scroll2,1);
}
else if (jb==bt3)
{
dm.rows.clear();
remove(1);
selectMenuType(index+2);
table3=new JTable(dm);
scroll3 = new JScrollPane(table3);//텍스트영역에 스크롤바 달기
scroll3.getVerticalScrollBar().setValue (scroll3.getVerticalScrollBar().getMaximum());
scroll3.setBounds(10,50,370,200);
scroll3.setBorder(new TitledBorder(new EtchedBorder(),"Menu"));
scroll3.setBackground(Color.white);
scroll3.validate(); //최근값으로 스크롤바 이동하기.
TableColumn column = null;
for(int i=0;i
column = table3.getColumnModel().getColumn(i);
if(i==1) column.setPreferredWidth(150); // default width is 75.
else column.setPreferredWidth(30);
}
TableColumn lastNameColumn = table3.getColumnModel().getColumn(3);
JTextField tf = new JTextField();
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JTextField) value=((JTextField)o).getText();
row = table3.getSelectedRow();
col = table3.getSelectedColumn();
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){//수량에 0적지않으면 실행됨
if(dm.getValueAt(row,1).toString().length()>7){
str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
}else str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
dm.fireTableCellUpdated(row, col);
}
}
});
lastNameColumn.setCellEditor(new DefaultCellEditor(tf));
add(scroll3,1);
}
else if (jb==bt4)
{
dm.rows.clear();
remove(1);
selectMenuType(index+3);
table4=new JTable(dm);
scroll4 = new JScrollPane(table4);//텍스트영역에 스크롤바 달기
scroll4.getVerticalScrollBar().setValue (scroll4.getVerticalScrollBar().getMaximum());
scroll4.setBounds(10,50,370,200);
scroll4.setBorder(new TitledBorder(new EtchedBorder(),"Menu"));
scroll4.setBackground(Color.white);
scroll4.validate(); //최근값으로 스크롤바 이동하기.
TableColumn column = null;
for(int i=0;i
column = table4.getColumnModel().getColumn(i);
if(i==1) column.setPreferredWidth(150); // default width is 75.
else column.setPreferredWidth(30);
}
TableColumn lastNameColumn = table4.getColumnModel().getColumn(3);
JTextField tf = new JTextField();
tf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JTextField) value=((JTextField)o).getText();
row = table4.getSelectedRow();
col = table4.getSelectedColumn();
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){//수량에 0적지않으면 실행됨
if(dm.getValueAt(row,1).toString().length()>7){
str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
}else str2=str2+dm.getValueAt(row,1)+" "+dm.getValueAt(row,2)+" "+value+"
";
dm.fireTableCellUpdated(row, col);
}
}
});
lastNameColumn.setCellEditor(new DefaultCellEditor(tf));
add(scroll4,1);
}
else if (jb==bt5)//입력
{
if(Integer.parseInt(dm.getValueAt(row,3).toString ())!=0){
printArea2.setText(str1+str2);
insertDBmcode.add(dm.getValueAt(row,0).toString ());
insertDBamount.add(dm.getValueAt(row,3).toString ());
int tt =Integer.parseInt(dm.getValueAt(row,2).toString ()) *Integer.parseInt(dm.getValueAt(row,3).toString ());
totalPrice.add(tt);
insertDBmname.add(dm.getValueAt(row,1).toString ());
insertDBmprice.add(dm.getValueAt(row,2).toString ());
}
}
else if (jb==bt6)//취소
{
str2="";
printArea2.setText(str1+"");
totalPrice.clear ();
insertDBmcode.clear ();
insertDBamount.clear ();
for (int i = 0 ; i < dm.getRowCount() ; i++ )
{
dm.setValueAt(0,i,3);
}
}
else if (jb==bt7)//주문완료버튼
{
int total=0;
for (int j = 0 ; j < totalPrice.size() ; j++ )
{
total += (Integer)totalPrice.get(j);
}
int i = JOptionPane.showConfirmDialog(this,"총[ "+total+" ]원입니다
주문하시겠습니까?");
if (i==JOptionPane.YES_OPTION)
{
JOptionPane.showMessageDialog(this,"주문완료 되었습니다");
str2="";
printArea2.setText(str1+"");
try{
ResultSet rs1 = pm.executeSQL("select count(j_no) from jungsan");
rs1.next();
int j_no=rs1.getInt(1)+1;
rs1.close();
for (int idx = 0 ; idx < insertDBmcode.size() ; idx++)
{
ResultSet
rs2 = pm.executeSQL("insert into jungsan
values("+j_no+","+insertDBmcode.get(idx)+","+insertDBamount.get(idx)+","+totalPrice.get(idx)+",sysdate)");
ChatClient cc=new ChatClient("1");
cc.sendMessage("메뉴:
"+insertDBmname.get(idx)+"/가격:"+insertDBmprice.get(idx)+"/수량:"+
insertDBamount.get(idx)+"/총가격:"+totalPrice.get(idx));
j_no++;
}
totalPrice.clear ();
}catch(Exception ex){System.out.println(ex);}
}else JOptionPane.showMessageDialog(this,"계속주문 하겠습니다");
}
}
public static void show1() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("주문하기");
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500,60,390,500);
Print print = new Print();
//print.setOpaque(true); //content panes must be opaque
frame.setContentPane(print);//판넬을 붙인다(setContentPane)
//frame.pack();
frame.setVisible(true);
}
}
class PersistenceManager{
Statement stmt;
PersistenceManager(){
try{
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora92","rest","asdf");
stmt = con.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
ResultSet executeSQL(String str) throws SQLException{
return stmt.executeQuery(str);
}
}
class DataModel extends AbstractTableModel{
String[] columnNames = {"매뉴번호","메뉴명","가격","수량"};
Vector rows = new Vector();
DataModel(ResultSet rs) throws SQLException{
/*ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
columnNames = new String[numberOfColumns];
for (int column =0; column < numberOfColumns; column++){
columnNames[column] = metaData.getColumnLabel(column+1);
}*/
rows = new Vector();
while(rs.next()){
Vector newRow = new Vector();
for(int i=1; i<= getColumnCount();i++){
if(getColumnCount()!=i){
newRow.addElement(rs.getObject(i));
}else newRow.addElement(0);
}
rows.addElement(newRow);
}
}
public String getColumnName(int column){
if(columnNames[column] != null) {
return columnNames[column];
}else{
return "";
}
}
public int getColumnCount(){
return columnNames.length;
}
public int getRowCount() {
return rows.size();
}
public Object getValueAt(int aRow,int aColumn){
Vector row = (Vector)rows.elementAt(aRow);
//System.out.println(row.elementAt(aColumn));
return row.elementAt(aColumn);
}
public boolean isCellEditable(int r, int c){ // 테이블 편집가능하게 한다.
return (c == 3 ) ? true:false ;
}
public Class getColumnClass(int c) {
if(c==3) return new Integer(1).getClass();//3번째 컬럼은 무조건 인티져클래스형 리턴
return getValueAt(0, c).getClass();
}
public void setValueAt(Object obj, int r, int c){ // 테이블의 필드 값 입력으로 값이 변함
Vector row = (Vector)rows.elementAt(r);
row.add(c,obj);
fireTableCellUpdated(r, c);
}
}