/ / JTable nie pokazuje wszystkiego w JFrame w java - java, swing, jtable, jpanel, layout-manager

JTable nie pokazuje wszystkiego w JFrame w java - java, swing, jtable, jpanel, layout-manager

mam JTable następnie dodaję go do JPanel. Potem dodaję to JPanel do a JFrame zwana ramką. To frame pokaż poprawnie tabelę, ale gdy zmaksymalizuję okno, wtedy JPanel wciąż pozostaje niewielki rozmiar. Chcę pokazać JPanel jak w całym kadrze, gdy maksymalizuję ramkę. Oto mój kod:

import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

@SuppressWarnings("serial")
public class TestClass extends JPanel
{
public TestClass()
{
Vector columnNames = new Vector();
Vector data = new Vector();


int columns =3;

//  Get column names

columnNames.addElement("Id");
columnNames.addElement("Name");
columnNames.addElement("Age");

//  Get row data

Vector row = new Vector(columns);
row.addElement("1");
row.addElement("Moshi");
row.addElement("22");

data.addElement( row );




//  Create table with database data

JTable table = new JTable(data, columnNames)
{
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);

if (o != null)
{
return o.getClass();
}
}

return Object.class;
}
};

JScrollPane scrollPane = new JScrollPane( table );
add(scrollPane);

}

public static void main(String[] args)
{
TestClass testClass  = new TestClass(); //**JPanel**
JFrame frame = new JFrame();
frame.setSize(500, 600);
frame.getContentPane().add(testClass); //**add jpanel to frame**
frame.setVisible(true);
}
}

Odpowiedzi:

1 dla odpowiedzi № 1

Użyj menedżera układu, który dopasowuje komponenty zgodnie z dostępnym rozmiarem, a nie JPanel"s domyślna FlowLayout który wykorzystuje tylko preferowany rozmiar komponentów, np.

setLayout(new GridLayout());