Java

Java 일지 #11 수정, 삭제(20210826)

uni5948 2021. 8. 27. 12:53

11. 수정, 삭제 구현

-수정 구현

 *ItemTable 파일에 수정 코드 입력(ItemTable.java)

    // 수정하기

    public void updateItems() throws Exception {

        for (int i = 0i < this.getRowCount(); i++) {

            String code = this.getModel().getValueAt(i0).toString();

            String name = this.getModel().getValueAt(i1).toString();

            String text = this.getModel().getValueAt(i2).toString();

            String price = this.getModel().getValueAt(i3).toString();

            String quantity = this.getModel().getValueAt(i4).toString();

 

            Item item = new Item();

            item.setCode(Integer.parseInt(code));

            item.setName(name);

            item.setText(text);

            item.setPrice(Integer.parseInt(price));

            item.setQuantity(Long.parseLong(quantity));

 

            ItemDB.getInstance().updateItem(item);

        }

    }

 *이전에 목록 생성 시 버튼 사용 활성화를 위해 코드 입력한 것이 있어 그대로 사용한다.(SelectPanel.java)

 @Override

    public void actionPerformed(ActionEvent e) { // 버튼 액션 활성화

        if (e.getSource() == button1) { // 수정

            try {

                ItemTable.getInstance().updateItems();

            } catch (Exception e1) {

                e1.printStackTrace();

            }

        }

    }

 *구현

Frame 수정
db 확인

 -삭제 구현

 *ItemTable 파일에 삭제 코드 입력(ItemTable.java)

    // 삭제하기

    public void deleteItems() throws Exception {

        int[] rows = this.getSelectedRows(); // 선택된 위치 정보

        if (rows.length <= 0) {

            JOptionPane.showMessageDialog(this"물품삭제실패""실패"JOptionPane.WARNING_MESSAGE);

        } else {

            for (int idx : rows) {

                String code = this.getModel().getValueAt(idx0).toString();

                Item item = new Item();

                item.setCode(Integer.parseInt(code));

                ItemDB.getInstance().deleteItem(item);

            }

            this.refreshData();

        }

    }

 *이전에 목록 생성 시 버튼 사용 활성화를 위해 코드 입력한 것이 있어 그대로 사용한다.(SelectPanel.java)

 @Override

    public void actionPerformed(ActionEvent e) { // 버튼 액션 활성화

        if (e.getSource() == button2) { // 삭제

            try {

                int ret = JOptionPane.showConfirmDialog(null"삭제 하시겠습니까""삭                   제"JOptionPane.OK_CANCEL_OPTION);

                if (ret == 0) {

                    ItemTable.getInstance().deleteItems();

                }

            } catch (Exception e1) {

                e1.printStackTrace();

            }

        }

    }

 *ItemDB.java 코드 입력

public int deleteItem(Item itemthrows Exception//삭제

        DeleteResult result = this.collection.deleteOne(Filters.eq("_id",item.getCode()));

        if(result.getDeletedCount() == 1) {

            return 1;

        }

        return 0;

    }    

 *구현

 **ItemTable에서 만든 선택하지 않았을 때 삭제 실패 알림 확인

삭제 실패 알림
삭제 확인 알람
db 확인

-물품 추가 후 목록 자동 갱신

 *ItemFrame에 코드 입력(ItemFrame.java)

 **기존 implements ~~를 implements ChangeListener 로 수정 후 override 한다.

 **생성자의 tab 코드에 tabbedPane.addChangeListener(this);  추가 한다.  

public class ItemFrame extends JFrame implements ChangeListener {

    private JTabbedPane tabbedPane = null;

 

    @Override

    public void stateChanged(ChangeEvent e) {

        System.out.println(e.getSource());

        int idx = tabbedPane.getSelectedIndex();

        if (idx == 2) {

            ItemTable.getInstance().refreshData();

        }

    }

 

//tab

        tabbedPane = new JTabbedPane();

        tabbedPane.add("홈"new HomePanel());

        tabbedPane.add("물품등록"new InsertPanel());

        tabbedPane.add("물품목록"new SelectPanel());

        tabbedPane.setSelectedIndex(0);

        tabbedPane.addChangeListener(this);

        this.add(tabbedPane);

 *구현

10016 등록
목록 갱신 확인