2012-05-21 4 views
0

My JTable이 보이지 않습니다. 나는 이유를 모른다. 어쩌면 당신이 나를 도울 수 있습니다. 오른쪽 패널이있는 창 클래스가 있고 오른쪽 패널에 모델 데이터가있는 테이블이 있어야합니다. 나는 더미 데이터를 사용하여 월과 일 등으로 시작했다. 여기 JTable이 표시되지 않는 이유는 무엇입니까?

는 오른쪽 패널 클래스에게 있습니다

import model.*; 


import java.awt.*; 
import java.awt.event.*; 
//import java.text.*; 
import javax.swing.*; 


public class RightPanel extends JPanel implements View 
{ 
    private TablePanel songsnartists = new TablePanel(); 
    Shop shop; 

    public RightPanel(Shop ourShop) 
    { 
     shop = ourShop; 
     setup(); 
     build(); 
     setVisible(true); 
    } 

    private void setup() 
    { 
     setPreferredSize(new Dimension(300, 300)); 
     setLayout(new GridLayout(3,2)); 
     setBorder(BorderFactory.createLineBorder(Color.blue)); 
    } 

    private void build() 
    { 
     add(songsnartists); 
    } 

    public void update() 
    {} 
} 

/* 간단한만큼 지금까지 내 오른쪽 패널 여기에 */

내가 만든 TablePanel 클래스가에 테이블 패널을 추가하려고합니다. 그것은 JTable을 상속하고 내가 편집 할 수없는 테이블을 만들기 위해 AbstractTableModel을 상속받은 MyTableModel이라는 개인 클래스를 사용합니다.

import javax.swing.*; 
import javax.swing.table.*; 


public class TablePanel extends JTable 
{ 
    //private int ROWS = 3; 
    //private int COLUMNS = 2; 
    private final String [][] data = {{"Jan", "31"}, {"Feb","28"},{"Mar","31"}}; 
    private final String[] headers = {"Month", "Days"}; 
    JTable table; 


    public TablePanel() 
    { 
     table = new JTable(new MyTableModel(data, headers)); 
     JTableHeader header = table.getTableHeader(); 
     //header.setBackground(Color.blue); 
     setVisible(true); 
    } 

    private class MyTableModel extends AbstractTableModel 
    { 
     private String[] columnNames = {"Month", "Days"}; 
     private String[][] data = {{"Jan", "31"}, {"Feb","28"},{"Mar","31"}}; 

     public MyTableModel(String [][] data, String [] header) 
     { 
      int rows, cols, rowCounter, colCounter; 

      rows = getRowCount(); 
      cols = getColumnCount(); 

      for (rowCounter=0; rowCounter < rows; rowCounter++) 
       { 
        for (colCounter=0; colCounter < cols; colCounter++) 
         { 
          setValueAt(data[rowCounter][colCounter],rowCounter,colCounter); 
         } 
       }   
     } 


     public int getColumnCount() 
     { 
      return columnNames.length; 
     } 

     public int getRowCount() 
     { 
      return data.length; 
     } 

     public String getColumnName(int col) 
     { 
      return columnNames[col]; 
     } 

     public Object getValueAt(int row, int col) 
     { 
      return data[row][col]; 
     } 

     public Class getColumnClass(int c) 
     { 
      return getValueAt(0, c).getClass(); 
     } 

     public boolean isCellEditable(int row, int col) 
     { 
      return false; 
     } 
    } 
} 

위에서 볼 수 있듯이 추상 메소드는 비공개 클래스에서 재정의됩니다. 누가 내 JTable이 나타나지 않는지 보여 주도록 도와 줄 수 있습니까?

+1

그래서 ... 어디에서 JTable을 표시 하시겠습니까? – Tharwen

+0

RightPanel 인스턴스를 프레임에 추가하고 있습니까? 지금은 RightPanel에 TablePanel을 추가하고 있지만 RightPanel을 추가하지는 않습니다. –

답변

4
  • 읽기 튜토리얼 How to Use Tables

  • 는에 JTable를 넣어 JScrollPane

  • , 당신이 JTable을 추가 한이 볼 수 없습니다
  • 적절한 LayoutManager를 사용하여 JPanelJScrollPane를 넣어하는 것을 잊지 마세요 JPanel에 새로운 것인지 확실하지 않을 경우 GridLayout(3,2)LayoutManagerJTable view

+0

이 문제는 해결되었지만 몇 년 전이었습니다. 내가 어떻게했는지 잊어 버렸어. 내가 기억한다면 여기에 대답을 게시 할 것입니다. –

+0

죄송합니다. 더 이상의 정보를 제공 할 수 없습니다. 이것은 오래 전이었고 잊어 버렸습니다. 나는 물건을 고정하는 방법을 정확하게 기억하지 않는다. 게으른 나. –

관련 문제