package agg.gui.termination; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Color; import java.util.Vector; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.TitledBorder; @SuppressWarnings("serial") public class TypeTable extends JPanel { private int hght; public TypeTable(Vector<String> types, String title) { super(new BorderLayout()); setBackground(Color.orange); setBorder(new TitledBorder(title)); JPanel typePanel = new JPanel(new BorderLayout()); JTable typeTable = new JTable(types.size(), 1); typeTable.setEnabled(false); for (int i = 0; i < types.size(); i++) { typeTable.setValueAt(types.elementAt(i), i, 0); } this.hght = getHeight(typeTable.getRowCount(), typeTable.getRowHeight()); typeTable.doLayout(); JScrollPane typeScrollPane = new JScrollPane(typeTable); typeScrollPane.setPreferredSize(new Dimension(200, this.hght)); typePanel.add(typeScrollPane, BorderLayout.CENTER); add(typePanel, BorderLayout.CENTER); validate(); } public Dimension getPreferredSize() { return new Dimension(200, this.hght); } public int getTableHeight() { return this.hght; } private int getHeight(int rowCount, int rowHeight) { int n = 10; int h = (rowCount + 3) * rowHeight; if (rowCount > n) h = (n + 2) * rowHeight; // else if(rowCount < 5) // h = 7*rowHeight; else if (rowCount == 0) h = 2 * rowHeight; return h; } }