2011-10-18 1 views
1

데이터베이스에서 결과를 가져온 후 런타임에 테이블을 생성합니다. 내 응용 프로그램의 흐름은 다음과 같습니다.업데이트 후 JTable에 결과가 표시되지 않습니까?

  1. 빈 JScrollPane()을 초기화하는 중입니다. JScrollPane tableScroll = new JScrollPane();
  2. 데이터베이스에서 결과를 가져 오는 중.
  3. 의 JTable에 결과를 업데이트하고 JScrollPane의 사용하여 다음과 같은 방법으로 JTable의 추가 :

코드 :

private void setResultTable(Vector documents, Vector header) { 
    TableModel model = new DefaultTableModel(documents, header); 
    documentTable.setModel(model); 
    tableScroll.add(documentTable); 
    tableScroll.repaint(); 
} 

내 문제가 setResultTable 결과를 호출 한 후 테이블에 나타나지 않는 것입니다. 그걸 도와주세요. 미리 감사드립니다 !!!

답변

6

JTable을 JScrollPane에 직접 추가하는 것으로 보입니다. 그래서 이것은 정확하지 않은 당신은 당신이 실제로 스크롤 구획의 뷰포트에 테이블을 추가 할 수 있도록이를 변경하는 것이 좋습니다 경우

tableScroll.getViewport().add(documentTable); 

이 일 후가 JScrollPane를 다시 칠 필요가 없습니다. 이 방법으로 문제가 해결되지 않으면

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class AddTableToScroll { 
    public static void main(String[] args) { 
     final JScrollPane sPane = new JScrollPane(); 

     // Sorry Jeanette!! 
     sPane.setPreferredSize(new Dimension(200, 150)); 

     JButton button = new JButton(new AbstractAction("Press Me!") { 

     public void actionPerformed(ActionEvent arg0) { 
      DefaultTableModel model = new DefaultTableModel(new Integer[][] { 
        { 1, 2 }, { 3, 4 } }, new String[] { "A", "B" }); 
      JTable table = new JTable(model); 

      sPane.getViewport().add(table); 

     } 
     }); 

     JPanel panel = new JPanel(); 
     panel.add(sPane); 
     panel.add(button); 

     JOptionPane.showMessageDialog(null, panel); 

    } 
} 

, 당신도, 당신이 무엇을보고, 가능하면 것은 보여줍니다 작은 컴파일 가능한 실행 가능한 프로그램으로 우리를 공급하는 일이 정확히 무엇을 우리에게 말하고 싶은 것 : 예를 들어

귀하의 문제는 SSCCE

+0

:-) artifactual price for optionpane – kleopatra