private void create(int topPad, int leftPad, int bottomPad, int rightPad) {
		Border border = new TitledBorder(new EtchedBorder(), "Source");
		setBorder(border);

		addressLabel = new GDLabel("FFFFFFFF"); // use a default
		Gui.registerFont(addressLabel, "font.monospaced");
		addressLabel.setName("addressLabel");

		mnemonicLabel = new GDLabel("movl");
		Gui.registerFont(mnemonicLabel, "font.monospaced");
		mnemonicLabel.setName("mnemonicLabel");
		mnemonicLabel.addMouseListener(mouseListener);

		operandLabels = new JLabel[Program.MAX_OPERANDS];
		for (int i = 0; i < operandLabels.length; i++) {
			operandLabels[i] = new GDLabel("%ebp, ");
			operandLabels[i].setName("operandLabels[" + i + "]");
			operandLabels[i].addMouseListener(mouseListener);
			Gui.registerFont(operandLabels[i], "font.monospaced");
		}

		innerPanel = new JPanel();
		BoxLayout bl = new BoxLayout(innerPanel, BoxLayout.X_AXIS);
		innerPanel.setLayout(bl);
		setName("Instruction Panel");
		setToolTipText("This component selects which instruction piece is active for this dialog");
		innerPanel.getAccessibleContext()
				.setAccessibleDescription("Use left or right arrows to choose which mnemonic or" +
					" operand piece this dialog applies to");
		updateAccessibleInfo();

		if (goHomeAction != null) {
			Action action = KeyBindingUtils.adaptDockingActionToNonContextAction(goHomeAction);
			JButton homeButton = new JButton(action);
			homeButton.setText(null);
			homeButton.setMargin(new Insets(0, 0, 0, 0));
			innerPanel.add(Box.createHorizontalStrut(5));
			add(homeButton, BorderLayout.WEST);
		}

		innerPanel.add(Box.createHorizontalStrut(5));
		innerPanel.add(addressLabel);
		innerPanel.add(Box.createHorizontalStrut(20));
		innerPanel.add(mnemonicLabel);
		innerPanel.add(Box.createHorizontalStrut(10));
		innerPanel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));

		for (JLabel operandLabel : operandLabels) {
			innerPanel.add(operandLabel);
			innerPanel.add(Box.createHorizontalStrut(5));
		}

		add(innerPanel, BorderLayout.CENTER);

		if (dropSupported) {

			dropTargetAdapter = new DropTgtAdapter(dropHandler, DnDConstants.ACTION_COPY_OR_MOVE,
				ACCEPTABLE_DROP_FLAVORS);

			// Setup drop targets for mnemonic and each operand label
			dropTargets = new DropTarget[Program.MAX_OPERANDS + 1];
			dropTargets[0] = new DropTarget(mnemonicLabel, DnDConstants.ACTION_COPY_OR_MOVE,
				dropTargetAdapter, true);
			dropTargets[0].setActive(false);
			for (int i = 1; i < dropTargets.length; i++) {
				dropTargets[i] = new DropTarget(operandLabels[i - 1],
					DnDConstants.ACTION_COPY_OR_MOVE, dropTargetAdapter, true);
				dropTargets[i].setActive(false);
			}

		}
		innerPanel.setFocusable(true);
		innerPanel.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				switch (e.getKeyCode()) {
					case KeyEvent.VK_LEFT:
						updateActiveIndex(getPreviousIndex(), -1);
						e.consume();
						break;
					case KeyEvent.VK_RIGHT:
						updateActiveIndex(getNextIndex(), -1);
						e.consume();
						break;
				}
			}
		});
		innerPanel.addFocusListener(new FocusListener() {

			@Override
			public void focusLost(FocusEvent e) {
				innerPanel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
			}

			@Override
			public void focusGained(FocusEvent e) {
				innerPanel.setBorder(BorderFactory.createLineBorder(FOCUS_COLOR, 1));
			}
		});

	}
Create the components for this panel.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/references/InstructionPanel.java