private JPanel buildMainPanel() {
		JPanel panel = new JPanel(new BorderLayout());

		ServiceProvider serviceProvider = plugin.getTool();
		tableModel = new RelocationTableModel(serviceProvider, currentProgram, null);
		tableModel.addTableModelListener(e -> {
			int rowCount = tableModel.getRowCount();
			setSubTitle(rowCount + " rows");
		});

		threadedPanel = new GhidraThreadedTablePanel<>(tableModel);
		table = threadedPanel.getTable();

		table.installNavigation(serviceProvider);
		table.setPreferredScrollableViewportSize(new Dimension(300, 200));
		table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
		table.getSelectionModel().addListSelectionListener(e -> contextChanged());

		ToolTipManager.sharedInstance().registerComponent(table);

		panel.add(threadedPanel, BorderLayout.CENTER);

		tableFilterPanel = new GhidraTableFilterPanel<>(table, tableModel);
		panel.add(tableFilterPanel, BorderLayout.SOUTH);

		String namePrefix = "Relocations";
		table.setAccessibleNamePrefix(namePrefix);
		tableFilterPanel.setAccessibleNamePrefix(namePrefix);

		return panel;
	}
Build the main panel for this component.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/reloc/RelocationProvider.java