Failed Code VS Success Code

탱귤생귤·2023년 4월 18일

SQL

목록 보기
5/13

Failed

-->Gives an error message
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 14 out of bounds for length 14

package JDBC05;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel;

class RentDetail_Form extends JFrame implements ActionListener{
	RentDao rdao = RentDao.getInstance();
	String [][] data;
	JTable jtb;
	RentDetail_Form(){
		
		ArrayList<RentDetailDto> list = rdao.selectRentDetail();
		
		String [] colHeads= {"대여번호","대여일","도서번호","도서명","회원번호","회원성명","대여금액","할인금액","할인가"};
		data = new String[list.size()][9];
		for(int i=0; i<list.size(); i++) {
			data[i][0] = String.valueOf(list.get(i).getNumseq());
			data[i][1]= list.get(i).getRentdate();
			data[i][2] = String.valueOf(list.get(i).getBooknum());
			data[i][3] = list.get(i).getSubject();
			data[i][4] = String.valueOf(list.get(i).getMembernum());
			data[i][5] = list.get(i).getName();
			data[i][6] = String.valueOf(list.get(i).getRentprice());
			data[i][7] = String.valueOf(list.get(i).getAmount());
			data[i][8] = String.valueOf(list.get(i).getDiscount());
		}
		jtb = new JTable(data, colHeads);
		JScrollPane jsp = new JScrollPane(jtb);
		JButton btn = new JButton("새로고침");
		
		TableColumnModel tcm= jtb.getColumnModel();
		DefaultTableCellRenderer dtcr1 = new DefaultTableCellRenderer();
		dtcr1.setHorizontalAlignment(SwingConstants.CENTER);
		tcm.getColumn(0).setCellRenderer(dtcr1);
		tcm.getColumn(1).setCellRenderer(dtcr1);
		tcm.getColumn(2).setCellRenderer(dtcr1);
		tcm.getColumn(4).setCellRenderer(dtcr1);
		tcm.getColumn(5).setCellRenderer(dtcr1);
		tcm.getColumn(6).setCellRenderer(dtcr1);
		tcm.getColumn(7).setCellRenderer(dtcr1);
		tcm.getColumn(8).setCellRenderer(dtcr1);

		DefaultTableCellRenderer dtcr2 = new DefaultTableCellRenderer();
		dtcr1.setHorizontalAlignment(SwingConstants.LEFT);
		tcm.getColumn(3).setCellRenderer(dtcr2);
		
		
		jtb.getColumnModel().getColumn(0).setMaxWidth(60);
		jtb.getColumnModel().getColumn(0).setMinWidth(60);
		jtb.getColumnModel().getColumn(0).setWidth(60);
		
		jtb.getColumnModel().getColumn(1).setMaxWidth(100);
		jtb.getColumnModel().getColumn(1).setMinWidth(100);
		jtb.getColumnModel().getColumn(1).setWidth(100);

		jtb.getColumnModel().getColumn(2).setMaxWidth(60);
		jtb.getColumnModel().getColumn(2).setMinWidth(60);
		jtb.getColumnModel().getColumn(2).setWidth(60);

		jtb.getColumnModel().getColumn(4).setMaxWidth(60);
		jtb.getColumnModel().getColumn(4).setMinWidth(60);
		jtb.getColumnModel().getColumn(4).setWidth(60);
		
		jtb.getColumnModel().getColumn(5).setMaxWidth(60);
		jtb.getColumnModel().getColumn(5).setMinWidth(60);
		jtb.getColumnModel().getColumn(5).setWidth(60);
		
		jtb.getColumnModel().getColumn(6).setMaxWidth(60);
		jtb.getColumnModel().getColumn(6).setMinWidth(60);
		jtb.getColumnModel().getColumn(6).setWidth(60);
		
		jtb.getColumnModel().getColumn(7).setMaxWidth(60);
		jtb.getColumnModel().getColumn(7).setMinWidth(60);
		jtb.getColumnModel().getColumn(7).setWidth(60);
		
		btn.addActionListener(this);
		
		Container container =getContentPane();
		container.setLayout(new BorderLayout());
		container.add(jsp, BorderLayout.CENTER);
		container.add(btn, BorderLayout.SOUTH);
		
		setTitle("table box ex");
		setSize(700,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		ArrayList<RentDetailDto> list = rdao.selectRentDetail();
		data = new String[list.size()][9];
		for(int i =0; i<list.size();i++) {
			jtb.setValueAt(String.valueOf(list.get(i).getNumseq()), i, 0);
			jtb.setValueAt(list.get(i).getRentdate(), i, 1);
			jtb.setValueAt(String.valueOf(list.get(i).getBooknum()), i, 2);
			jtb.setValueAt(list.get(i).getSubject(), i, 3);
			jtb.setValueAt(String.valueOf(list.get(i).getMembernum()), i, 4);
			jtb.setValueAt(list.get(i).getName(), i, 5);
			jtb.setValueAt(String.valueOf(list.get(i).getRentprice()), i, 6);
			jtb.setValueAt(String.valueOf(list.get(i).getAmount()), i, 7);
			jtb.setValueAt(String.valueOf(list.get(i).getDiscount()), i, 8);
		}
	}
}
public class RentDetail_Select {

	public static void main(String[] args) {
		
		new RentDetail_Form();
	}
}

Success

package JDBC05;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;

class RentDetail_Form extends JFrame implements ActionListener{
	RentDao rdao = RentDao.getInstance();
	String [][] data;
	JTable jtb;
	RentDetail_Form(){
		
		ArrayList<RentDetailDto> list = rdao.selectRentDetail();
		
//		String [] colHeads= {"대여번호","대여일","도서번호","도서명","회원번호","회원성명","대여금액","할인금액","할인가"};
		data = new String[list.size()][9];
		for(int i=0; i<list.size(); i++) {
			data[i][0] = String.valueOf(list.get(i).getNumseq());
			data[i][1]= list.get(i).getRentdate();
			data[i][2] = String.valueOf(list.get(i).getBooknum());
			data[i][3] = list.get(i).getSubject();
			data[i][4] = String.valueOf(list.get(i).getMembernum());
			data[i][5] = list.get(i).getName();
			data[i][6] = String.valueOf(list.get(i).getRentprice());
			data[i][7] = String.valueOf(list.get(i).getAmount());
			data[i][8] = String.valueOf(list.get(i).getDiscount());
		}
//		jtb = new JTable(data, colHeads);
		DefaultTableModel model = new DefaultTableModel();
		jtb = new JTable(model);
		model.addColumn("대여번호");
		model.addColumn("대여일");
		model.addColumn("도서번호");
		model.addColumn("도서명");
		model.addColumn("회원번호");
		model.addColumn("회원성명");
		model.addColumn("대여금액");
		model.addColumn("할인금액");
		model.addColumn("할인가");
		for(int i=0; i<list.size(); i++)  model.addRow(data[i]);
		
		JScrollPane jsp = new JScrollPane(jtb);
		JButton btn = new JButton("새로고침");
		
		TableColumnModel tcm= jtb.getColumnModel();
		DefaultTableCellRenderer dtcr1 = new DefaultTableCellRenderer();
		dtcr1.setHorizontalAlignment(SwingConstants.CENTER);
		tcm.getColumn(0).setCellRenderer(dtcr1);
		tcm.getColumn(1).setCellRenderer(dtcr1);
		tcm.getColumn(2).setCellRenderer(dtcr1);
		tcm.getColumn(4).setCellRenderer(dtcr1);
		tcm.getColumn(5).setCellRenderer(dtcr1);
		tcm.getColumn(6).setCellRenderer(dtcr1);
		tcm.getColumn(7).setCellRenderer(dtcr1);
		tcm.getColumn(8).setCellRenderer(dtcr1);

		DefaultTableCellRenderer dtcr2 = new DefaultTableCellRenderer();
		dtcr1.setHorizontalAlignment(SwingConstants.LEFT);
		tcm.getColumn(3).setCellRenderer(dtcr2);
		
		
		jtb.getColumnModel().getColumn(0).setMaxWidth(60);
		jtb.getColumnModel().getColumn(0).setMinWidth(60);
		jtb.getColumnModel().getColumn(0).setWidth(60);
		
		jtb.getColumnModel().getColumn(1).setMaxWidth(100);
		jtb.getColumnModel().getColumn(1).setMinWidth(100);
		jtb.getColumnModel().getColumn(1).setWidth(100);

		jtb.getColumnModel().getColumn(2).setMaxWidth(60);
		jtb.getColumnModel().getColumn(2).setMinWidth(60);
		jtb.getColumnModel().getColumn(2).setWidth(60);

		jtb.getColumnModel().getColumn(4).setMaxWidth(60);
		jtb.getColumnModel().getColumn(4).setMinWidth(60);
		jtb.getColumnModel().getColumn(4).setWidth(60);
		
		jtb.getColumnModel().getColumn(5).setMaxWidth(60);
		jtb.getColumnModel().getColumn(5).setMinWidth(60);
		jtb.getColumnModel().getColumn(5).setWidth(60);
		
		jtb.getColumnModel().getColumn(6).setMaxWidth(60);
		jtb.getColumnModel().getColumn(6).setMinWidth(60);
		jtb.getColumnModel().getColumn(6).setWidth(60);
		
		jtb.getColumnModel().getColumn(7).setMaxWidth(60);
		jtb.getColumnModel().getColumn(7).setMinWidth(60);
		jtb.getColumnModel().getColumn(7).setWidth(60);
		
		btn.addActionListener(this);
		
		Container container =getContentPane();
		container.setLayout(new BorderLayout());
		container.add(jsp, BorderLayout.CENTER);
		container.add(btn, BorderLayout.SOUTH);
		
		setTitle("table box ex");
		setSize(700,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		ArrayList<RentDetailDto> list = rdao.selectRentDetail();
		data = new String[list.size()][9];
		
		DefaultTableModel model =(DefaultTableModel)jtb.getModel();
		if(list.size()!=model.getRowCount()) {
			String[] record = new String[9];
			model.addRow(record);
		}
		
		
		for(int i =0; i<list.size();i++) {
			jtb.setValueAt(String.valueOf(list.get(i).getNumseq()), i, 0);
			jtb.setValueAt(list.get(i).getRentdate(), i, 1);
			jtb.setValueAt(String.valueOf(list.get(i).getBooknum()), i, 2);
			jtb.setValueAt(list.get(i).getSubject(), i, 3);
			jtb.setValueAt(String.valueOf(list.get(i).getMembernum()), i, 4);
			jtb.setValueAt(list.get(i).getName(), i, 5);
			jtb.setValueAt(String.valueOf(list.get(i).getRentprice()), i, 6);
			jtb.setValueAt(String.valueOf(list.get(i).getAmount()), i, 7);
			jtb.setValueAt(String.valueOf(list.get(i).getDiscount()), i, 8);
		}
	}
}
public class RentDetail_Select {

	public static void main(String[] args) {
		
		new RentDetail_Form();
	}
}

0개의 댓글