728x90
반응형
▶ 프로젝트
https://soheepark.tistory.com/183
[에러 메시지]
java.lang.reflect.InvocationTargetException
Caused by: java.lang.ArrayIndexOutOfBoundsException: 10 >= 10
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
1. 원인
java.lang.ArrayIndexOutOfBoundsException: 10 >= 10
ArrayIndexOutOfBoundsException는 주로 코드 내에서 배열이나 리스트의 인덱스를 잘못 참조했을 때 발생한다.
쿠폰 검색 팝업창의 View, 서비스단 총 2개의 파일에 쿠폰아이디 값을 불러오는 로직을 추가했는데
table을 그리는 과정에서 에러가 난 것 같다.
테이블 열의 수와 데이터의 수가 일치하지 않아서 생기는 에러다.
나의 경우, 테이블의 열 인덱스가 열의 개수보다 커서 해당 에러가 나타났다.
Java Swing의 JTable을 그리는 과정에서 순서가 잘 맞지 않아 생기는 에러같다.
2. 해결
ArrayIndexOutOfBoundsException 에러를 해결하기 위해서는
테이블 생성 메서드에서 테이블 열을 설정하는 순서와 addRow 메서드에서 데이터를 삽입하는 순서를 일치시켜야 한다.
[서비스단 자바 파일]
private void addRow(int idx, int row, DTO dto) {
try {
view.data.insertRow(row, new Object[] {
dto.getA()
,dto.getB() //추가 (수정 코드)
,dto.getC()
,idx
// ,dto.getB() (기존 코드)
}
}
}
[View.java 파일]
private void makeTable() {
String[] tbTitle = {
"A"
, "B" // (수정 코드)
, "C"
,"idx"
// , "B" // (기존 코드)
};
//생략
table.getColumnModel().getColumn(cnt).setPreferredWidth(80); // A
table.getColumnModel().getColumn(cnt++).setMinWidth(80);
table.getColumnModel().getColumn(cnt).setPreferredWidth(80); // B (수정 코드)
table.getColumnModel().getColumn(cnt++).setMinWidth(80);
table.getColumnModel().getColumn(cnt).setPreferredWidth(80); // C
table.getColumnModel().getColumn(cnt++).setMinWidth(80);
table.getColumnModel().getColumn(cnt++).setPreferredWidth(0); // idx
table.getColumnModel().getColumn(cnt).setMinWidth(0);
table.getColumnModel().getColumn(cnt).setMaxWidth(0);
// table.getColumnModel().getColumn(cnt).setPreferredWidth(80); // B (기존 코드)
// table.getColumnModel().getColumn(cnt++).setMinWidth(80);
}
원래 코드에서는 tbTitle[]에 10개의 열이 정의되어 있었지만,
getColumn(cnt).setPreferredWidth()에서 열 인덱스를 잘못 참조했던 것이다.
따라서 addRow 메서드의 데이터 삽입 순서를 makeTable()의 열 정의 순서에 맞게 수정하였고,
열의 개수도 일치하게 수정함으로써 ArrayIndexOutOfBoundsException 에러를 해결했다.
728x90
반응형
'[Project] > 업무일지' 카테고리의 다른 글
[Java] NullPointerException (0) | 2024.07.17 |
---|---|
[Java/XML/SQL/Oracle] RuntimeException, IllegalArgumentException (0) | 2024.07.12 |
[XML/SQL/Oracle] SQLSyntaxErrorException: ORA-00911: invalid character (0) | 2024.07.11 |
[XML/SQL/Oracle] SQLSyntaxErrorException: ORA-02000: missing WITHIN keyword (0) | 2024.07.10 |
[Java Swing] ArrayIndexOutOfBoundsException (0) | 2024.07.10 |