Расширение JFrame кажется странным; вы не используете какие-либо возможности контейнера верхнего уровня. Вот пример, который расширяет JPanel, с main(), который бросает панель в JFrame.
--Edited принять существующий JPanel
public class TablePanel
{
public static void addTableToPanel(JPanel jPanel, Vector rowData, Vector columnNames)
{
JTable jTable = new JTable(rowData, columnNames);
jTable.setFillsViewportHeight(true);
JScrollPane jScrollPane = new JScrollPane(jTable);
jScrollPane.setPreferredSize(new Dimension(300, 50));
jPanel.add(jScrollPane);
}
public static void main(String[] args) throws Exception
{
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
Vector cols = new Vector();
Vector rows = new Vector();
Vector row1 = new Vector();
cols.add("A");
cols.add("B");
cols.add("C");
row1.add("1");
row1.add("2");
row1.add("3");
rows.add(row1);
rows.add(row1.clone());
rows.add(row1.clone());
rows.add(row1.clone());
JFrame frame = new JFrame("TableTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jPanel = new JPanel();
jPanel.setLayout(new BorderLayout(0, 0));
TablePanel.addTableToPanel(jPanel, rows, cols);
frame.getContentPane().add(jPanel);
frame.pack();
frame.setVisible(true);
}
});
}
}
Пожалуйста, включают [sscce] (http://www.sscce.org). – Moonbeam
Это сбивает с толку. Почему вы добавляете материал в JFrame, а затем добавляете его в другой JPanel? Какова мотивация этого? Вы знаете, что вы можете визуализировать компонент только один раз, а не дважды. Если вы хотите, чтобы один и тот же JTable отображался более одного раза, вам нужно создать несколько JTables и предоставить им общую модель таблицы. –
Я довольно новичок в java и все еще пытаюсь понять вещи, однако, я думаю, вы имеете в виду строку 'add (scrollPane);' Я думал, что это для прокрутки jtable ?. Затем я инициализирую класс таблицы и добавлю его компонент таблицы в главный jpanel. Где я иду не так? –