최근에 이상한 문제가 발생했습니다. 나는 개체의 DefaultTableModel에 속하는 TableModelListener에서 행을 제거하려고 할 때마다, 나는 여기 ArrayOutOfBounds 예외 0> = 0> = 1 : 1 (나는 선택에 따라 달라집니다) 내가 찾은 비슷한 문제가 무엇입니까 :DefaultTableModel 객체에서 행 제거
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 attempting to populate JTable
그러나 아직까지는 고칠 수 없었습니다. 내 목적은 사용자가 콤보 박스에서 삭제 옵션을 선택했을 때, 나는 단지 그 행을 완전히 제거하기를 원할 때이다. removeRow() 메서드는 청취자의 외부에서 제대로 작동합니다. 코드 및 설명은 다음과 같습니다.
String[] columnNames = {"Kargo ID",
"Alıcı Adres",
"Ağırlık(KG)",
"Tutar(TL)",
"Alım Saati","Durum","İletim Saati"};
Object[][] data = {
{new Integer(3), "Sinan Caddesi",
new Integer(100), new Integer(5),"" ,"",""}};
final DefaultTableModel dtm = new DefaultTableModel(data,columnNames);
final JTable table = new JTable(dtm){
@Override
public boolean isCellEditable(int row, int column) {
return column == 5;//Combobox column
}
};
//Making Combobox
TableColumn c = table.getColumnModel().getColumn(5);
JComboBox comboBox = new JComboBox();
comboBox.addItem("");
comboBox.addItem("Delete");
c.setCellEditor(new DefaultCellEditor(comboBox));
//System.out.println(dtm.getRowCount());
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(false);
//I printed row and column numbers, they re correct.
dtm.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
DefaultTableModel model = (DefaultTableModel)e.getSource();
Object data = model.getValueAt(row, column);
//System.out.println(data); DATA IS CORRECT
if(((String)data).equals("Delete"))
dtm.removeRow(row);//Exception Here
//System.out.println(row + " " + column);
}
});
중요한 점이 있습니까? 어떤 도움을 주시면 감사하겠습니다.
를 살펴 보자
super.setValueAt(...)
를 호출해야 당신이 그것을 등등 수정할 때 테이블 모델이 다른 테이블 변경 이벤트를 발생시키기 때문에 테이블 모델을 수정하는 ans ... [이 예제를보십시오 (http://stackoverflow.com/questions/) 12795442/how-can-remove-current-row-in-jtable-when-click-jbutton/12795907 # 12795907) 더 좋은 아이디어를 위해서 – MadProgrammer
다음 테이블에서 데이터 변경 내용을 듣는 방법? 나는 이미 테이블 대신 combobox에 actionListener를 추가하려고 시도했지만 결과는 동일했습니다. – nihirus
변경 내용을 듣고 변경 내용을 기반으로 수정하는 작업은 두 가지가 있습니다. 연결된 예제를 보자. – MadProgrammer