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이 나타나지 않는지 보여 주도록 도와 줄 수 있습니까?
그래서 ... 어디에서 JTable을 표시 하시겠습니까? – Tharwen
RightPanel 인스턴스를 프레임에 추가하고 있습니까? 지금은 RightPanel에 TablePanel을 추가하고 있지만 RightPanel을 추가하지는 않습니다. –