2013-05-10 4 views
0

GUI 응용 프로그램에서 JTable을 만들고 행을 추가하고 행을 제거하고 추가 및 제거 버튼을 사용하고 싶습니다. 문제는 내가 원하는 행을 제거 할 때입니다. 선택한 행 인덱스는 getSelectedRow() 메서드를 호출 할 때 NullPointerException이되었습니다. 나는 그것을 시도하고 내 질문에 답변을 찾지 못했습니다 또한 자바 문서를 읽으려고했지만이 방법은 평소에 그 예외를 포기하지 않는 것으로 나타났습니다.JTable에서 행을 제거 할 때의 문제

코드 :

// creating the table 
JTable table = new JTable(model); 
    model.addColumn("NO."); 
    model.addColumn("Name"); 
    model.addColumn("Status"); 
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
    table.setRowSelectionAllowed(true); 
    table.setShowGrid(false); 
    table.getColumnModel().getColumn(0).setPreferredWidth(28); 
    table.getColumnModel().getColumn(1).setPreferredWidth(222); 
    table.getColumnModel().getColumn(2).setPreferredWidth(100); 
    table.setBackground(color); 
    table.setPreferredScrollableViewportSize(new Dimension(350,250)); 
    table.setFillsViewportHeight(true); 
    scroll = new JScrollPane(table); 
    center.add(scroll); 

// adding records to it 
public class AddEvent implements ActionListener{ 
public void actionPerformed (ActionEvent event){ 

    String text = write.getText(); 

    if (!text.equals("") && !text.contains(" ")){ 
     String view = "http://www." + text; 
     write.setText(null); 
     model.addRow(new Object[]{model.getRowCount()+1, view,"Active"}); 
    } 

} 
} 


// to remove the selected row 
public class RemoveEvent implements ActionListener{ 
public void actionPerformed (ActionEvent event){ 
      int index = table.getSelectedRow(); // it throws the exception here 
     table.clearSelection();    
     System.out.println(index); 
     if(index != -1){ 
     table.remove(index); 
     } 

    } 

} 
+0

1) 빨리 더 나은 도움이 필요한 경우는,을 게시 어딘가에 당신은 아마 클래스 변수를 정의 [SSCCE] (http://sscce.org/). 2)'TableModel'을 변경하는 것이 더 좋습니다. 테이블 자체는 그대로 두십시오. –

답변

2

예외가 여기

int index = table.getSelectedRow(); 

발생하는 경우는 table 아마 null입니다. ActionListener이 작동하려면 table 클래스 멤버 변수는 JTable 인스턴스에 할당되어야합니다. 변수를 인스턴스화 할 때 섀도 잉하지 않는지 확인하십시오. 완료되지 않은

table = new JTable(model); 
+0

덕분에 더 이상 예외가 발생하지 않지만 선택된 행을 인식하지 못하고 -1의 인덱스 값을 부여합니다. –

+0

아무것도 선택하지 않으면'-1'이 반환됩니다. 행을 선택 했습니까? – Reimeus

+0

네, 행을 선택한 다음 지우는 것을 선택하면 아무것도 나타나지 않습니다. 주문한대로 내 선택을 지우고 -1을 보내주십시오. –

2

귀하의 게시 된 코드

JTable table = new JTable(model); 

바꾸기 그래서 내가 할 수있는 모든 추측을 할 수 있습니다.

JTable table = new JTable(model); 

이 변수는 로컬 변수처럼 보이므로 다른 클래스에서는 사용할 수 없습니다.

JTable table; // this is null 

이 시도해보십시오 : 데이터가 DefaultTableModel를 제거해야합니다 또한

//JTable table = new JTable(model); 
table = new JTable(model); 

:

model.removeRow(...); 
+0

덕분에 더 이상 예외가 발생하지 않지만 선택한 행을 인식하지 못합니다. 나 인덱스의 값을 -1로 –

관련 문제