JTable에서 여러 열을 추가하고 이동하는 데 문제가 있습니다.JTable에서 여러 열 이동
각 열에 특정 날짜에 대한 데이터와 열 헤더가 있습니다. 이동 자체는 모두 정상이지만 다음 열을 추가하고 이동하면 다시 설정됩니다.
프로젝트의 다른 모든 위치에서 위치를 변경하지 않았습니다. 여기
출력 (전용 헤더)의 예 :| 5 | 6 | 7 | 8 |
추가 헤더 "1"인덱스 0으로 이동 :
| 1 | 5 | 6 | 7 | 8 |
헤더 "2"를 추가하고 색인 1로 이동 :
| 5 | 2 | 6 | 7 | 8 | 1 |
추가 헤더 "3"과 인덱스 2로 이동 : 그것을 따라
| 5 | 6 | 3 | 7 | 8 | 1 | 2 |
및 일부 코드 ("< < < <"의에 의해 지정 문제 위치) :
public void recalculateTableDates(String start, String end, Double defaultValue) {
String startDate = getTblDetails().getColumnName(1);
String endDate = getTblDetails().getColumnName(getTblDetails().getColumnCount()-1);
int sMonth = Integer.parseInt(start.substring(4, 6));
int sYear = Integer.parseInt(start.substring(0, 4));
int eMonth = Integer.parseInt(end.substring(4, 6));
int eYear = Integer.parseInt(end.substring(0, 4));
// gets distance between 2 values
// (Used elsewhere in project, working as intended)
int duration = getDuration(sMonth, sYear, eMonth, eYear);
Vector<Double> data = new Vector<Double>(duration);
for(int i = 0; i < data.size(); i++) {
data.addElement(defaultValue);
}
for(int i = 1, mCount = sMonth, yCount = sYear; i < duration+1; i++) {
String yyyymm = String.valueOf(yCount)+String.format("%02d", mCount++);
// Adds to beginning - PROBLEM HERE <<<<<<<<<<<<<<<<<<<<<<<<<<
if(yyyymm.compareTo(startDate) < 0) {
getModel().addColumn(yyyymm, data);
moveColumn(tblDetails.getColumnCount()-1, i);
} else if(yyyymm.compareTo(endDate) > 0) {
// THIS IF STATEMENT WORKING AS INTENDED
getModel().addColumn(yyyymm, data);
}
if(mCount > 12) {
mCount = 1;
yCount++;
}
}
int length = getTblDetails().getColumnCount()-1;
System.out.println(duration + " " + length);
if(length > duration) {
TableColumnModel colModel = getTblDetails().getColumnModel();
for(int i = length; i > duration; i--) {
colModel.removeColumn(colModel.getColumn(i));
}
}
this.revalidate();
this.repaint();
}
// Moves column in table
private void moveColumn(int column, int targetIndex) {
getTblDetails().moveColumn(column, targetIndex);
}
코드가 좀 지저분하다는 것을 알고 있습니다. 이걸 고치려 고 위아래으로 달려있다.
누구에게 이런 이유가 발생 했습니까? JTable에 대한 광범위한 경험이 없습니다.
[SSCCE] (http://sscce.org) –
내 호기심에 더 빨리 도움을 받으려면 "2"열이 JTable에 추가 된 후 "1"이 표시된 열이 끝으로 이동 한 이유는 무엇입니까? 열 "3"에 대한 논리가 ..... 또는 논리가 될 수 있습니다. – mKorbel