2012-11-13 3 views
1

스윙에서 JTables를 사용하는 방법을 배우고 있습니다. 나는 이미 데이터베이스에 연결하고 결과 집합을 검색하는 방법을 알아 냈습니다. 또한 첫 번째 옵션을 사용하여 데이터를 표시 할 수 있습니다 (아래 참조).JTable 및 생성자 매개 변수

a) 행/열을 직접 전달하는 대신 TableModel을 사용/전달하는 아이디어를 이해하고 싶습니다. AbstractTableModel에서 사용할 수있는 내장 된 메서드를 사용할 수 있어야합니다. DefaultTableModel 및 ListTableModel 클래스

b) 사용자 정의 TableModel이란 무엇입니까? 직접 JTable의 생성자 객체로

  1. 패스 행과 열 :

    은 지금까지 나는 4 가지 방법으로 건너왔다.

예 :

JTable tab = new JTable(Object [][] rows, Object[] cols); 

2. AbstractTableModel가를 구현하는 클래스에서 테이블 모델을 만듭니다.

예 :

MyModel model = new MyModel(Object[][] obj1, String[] header); 

//MyModel is a class that extends AbstractTableModel. 
//MyModel has an ArrayList<Object[]> to store obj1[] 
//MyModel implements getRowCount(), getColumnCount() and 
getValueAt(int rowIndex, int columnIndex) and also getColumnName(int index) 

JTable tab = new JTable(model); 

3.Create의 DefaultTableModel를 구현하는 클래스의 테이블 모델.

예 : 사용자가 직접 데이터를 전달하는 경우, JTable가 내부적으로는 table.getModel()를 호출하여 얻을 수있는 DefaultTableModel를 생성됩니다

+2

[테이블 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)을 읽으면 많은 질문에 답할 수 있습니다. – MadProgrammer

+0

Thanks MadProgrammer . – user547453

답변

3

DefaultTableModel model = new DefaultTableModel(String data[][],String col[]); 
(or) 
DefaultTableModel model = DefaultTableModel(Vector data, Vector columnNames) 

JTable table = new JTable(model); 

4.ListTableModel.

다른 TableModel은 다른 기능을 가지고 있으며 TableModel을 구현하거나 AbstractTableModel (또는 DefaultTableModel)을 확장하는 클래스를 만들어 직접 구현할 수 있습니다. 이것의 배경에는 원시 테이블 데이터 그 이상을 필요로하는 경우가 있습니다.

예를 들어, 각 행에 객체를 연결하려는 경우 행 당 객체를 보유하는 TableModel을 작성하고 Object getObject(int rowIndex)void setObject(int rowIndex, Object object)과 같은 메소드를 제공 할 수 있습니다. 이렇게하려면 개체가 들어있는 TableModel 내부에 추가 배열 또는 목록을 보유 할 것이고 항상 행의 크기와 동일한 크기가됩니다.

또 다른 이유는 스크롤하는 동안 테이블 모델이 행 데이터를로드하거나 여러 데이터 소스의 데이터를 동적으로 표시하기를 원할 수도 있기 때문일 수 있습니다.

TableModel은 반드시 의 데이터를 보유 할 필요는 없습니다. 데이터를 보유하려면을 JTable에 제공하면됩니다.

+0

감사합니다. Felix ... – user547453

관련 문제