2009-10-23 1 views
0

JList를 만들고이를 테이블에 추가 한 다음 스크롤 창에 테이블을 추가하여 두 테이블 모두에 포함되도록하고 싶습니다. 스크롤 창.테이블에 JList를 추가하고 스크롤 창에 테이블을 추가합니다.

import model.*; 
import java.awt. *; 
import java.text.*; 
import javax.swing.*; 
import javax.swing.table.TableColumn; 

public class ScrollPanel extends JPanel implements View 
{ 
private Prison prison; 
private String[] cells = new String[20]; 
private JList list = new JList(cells); 

public ScrollPanel(Prison prison) 
{ 
    this.prison = prison; 
    prison.attach(this); 
    setup(); 
    build(prison); 
} 

public void setup() 
{ 

} 

public void build(Prison prison) 
{ 
    int rows = 20; 
    int columns = 2; 

    for (int i = 0; i < 20; i++) 
    { 
     cells[i] = prison.cells().get(i).id(); 
    } 

    JTable table = new JTable(rows, columns); 
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
    TableColumn column = null; 
    column = table.getColumnModel().getColumn(0); 
    column.setPreferredWidth(91); 
    column = table.getColumnModel().getColumn(1); 
    column.setPreferredWidth(91); 
    table.add(list); 
    JScrollPane scrollPane = new JScrollPane(table); 
    scrollPane.setPreferredSize(new Dimension(220, 150)); 
    add(scrollPane); 
} 

public void update() 
{ } 
} 

위에서 내가 붙여 넣은 코드를 테이블에 추가 할 때 내 프로그램이 어떻게 보이는지를 보여줍니다. alt text http://img21.imageshack.us/img21/3237/11834317.jpg 테이블을 목록에 추가 한 다음 스크롤 창에 추가하면 이것이 보입니다. 스크롤 창에 둘 모두를 추가하려면 어떻게해야합니까?

alt text http://img27.imageshack.us/img27/3678/94687555.jpg

이것은 .. 어떻게 보일지입니다

alt text http://img21.imageshack.us/img21/1343/90528093.jpg

답변

1

당신이 테이블에하는 JList를 추가하여 달성하고자합니까? 근본적으로 잘못된 일입니다. JTables는 구성 요소를 전혀 추가하지 않으려 고합니다. 테이블에 목록의 항목을 표시하려면 JList가 아닌 TableModel 인터페이스의 구현이 필요합니다.

편집 : 당신이 JList의와 JTable가이 서로 옆에 표시 할 경우 , 당신은 스크롤 구획 것을 추가하기 전에 JPanel의 모두에 addthem해야합니다. 그러나 이것은 다소 이상한 일입니다. 통상, 테이블은 독자적인 ScrollPane 내에 있습니다. 테이블과 목록에 대해 각각 별도의 ScrollPane을 가질 수 있습니다. 또는 목록 항목을 표의 첫 번째 열에 넣기 만하면됩니다. 요구 사항에 따라 어느 것이 더 낫습니다.

+0

그래서 TableModel을 사용하고 테이블 모델과 JList를 스크롤에 추가하면 함께 올 것인가? – Karen

1

테이블의 첫 번째 열에 1.1,1.2,1.3 등의 행 ID 값을 표시하려는 경우 무엇을 달성하려고하는지 잘 모르겠습니다. jtable의 첫 번째 열, 다른 열/렌더러 스타일로 스타일을 지정할 수도 있습니다. 그 경우에 동작하지 않는 경우는, 다음과 같은 스크롤 구획의 rowHeader로 JList를 설정할 수 있습니다. 목록 높이를 조정하려면 행 높이를 조정해야하며 그 반대의 경우도 마찬가지입니다. 그러나 이것은 당신이 원하는 것을 얻고리스트가 테이블을 따라 스크롤하도록 허용 할 것입니다. 행운을 빕니다!

import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JTable;

공용 클래스 스크롤 {

public static final void main(String[] args){ 
    JFrame f = new JFrame(); 
    f.setSize(new Dimension(400,400)); 
    JList list = new JList(new Object[]{"1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","1.10","1.11"}); 
    JTable table = new JTable(11,10); 
    JScrollPane sp = new JScrollPane(table); 
    sp.setRowHeaderView(list); 
    f.getContentPane().add(sp); 
    f.setVisible(true); 
} 

}

+0

숫자를 클릭하면 해당 감옥의 세부 정보를 보여주는 패널이 표시되도록 JList가 필요합니다. – Karen

+0

테이블로 할 수 있습니다. 위와 같이 구현할 이러한 요구 사항을 기반으로 테이블에서이 작업을 수행하는 것이 더 명확한 접근 방식이라고 생각합니다. 첫 번째 셀을 다른 셀로 렌더링하여 클릭 할 수 있음을 나타내거나 연관된 동작이 있습니다. columnModelListener 또는 ListSelectionListener를 테이블에 추가 할 수 있습니다. 이 이벤트를 통해 테이블에서 원하는 이벤트를 얻을 수있는 다양한 이벤트를들을 수 있습니다. table.getSelectionModel().addListSelectionListener ('귀하의 성찬') table.getColumnModel(). addColumnModelListener ('YOUR LISTENER') – broschb

0

아마 당신은 테이블의 각 행에 "자세히"버튼을 추가 할 수 있습니다. 그렇다면 TableButtonColumn이 도움이 될 것입니다.