private void setupExplicitAlignButtonAndTextField() {
		explicitAlignButton = new GRadioButton();
		explicitAlignButton.setName("Explicit Alignment");

		explicitAlignTextField = new GFormattedTextField(new DefaultFormatterFactory(), "");
		explicitAlignTextField.setName("Explicit Alignment Value");
		explicitAlignTextField.setEditable(true);

		String alignmentToolTip =
			"<html>Sets this data type to use the <B>explicit</B> alignment value<BR>" +
				"specified.  If packing is enabled, the computed alignment of<BR>" +
				"this composite may be any multiple of this value.</html>";
		explicitAlignButton.setToolTipText(alignmentToolTip);
		explicitAlignTextField.setToolTipText(alignmentToolTip);

		provider.registerHelp(explicitAlignButton, "Align");
		provider.registerHelp(explicitAlignTextField, "Align");

		// As a convenience, when this radio button is focused, change focus to the editor field
		explicitAlignButton.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent e) {
				explicitAlignTextField.requestFocus();
			}
		});

		explicitAlignButton.addActionListener(e -> chooseExplicitAlign());

		explicitAlignTextField.setInputVerifier(new InputVerifier() {
			@Override
			public boolean verify(JComponent input) {
				return decodeUnsignedIntEntry(explicitAlignTextField, "minimum alignment",
					false) > 0;
			}
		});

		explicitAlignTextField
				.addKeyListener(new UpAndDownKeyListener(defaultAlignButton, machineAlignButton));

		explicitAlignTextField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
					e.consume();
					// revert to model state when escape is hit
					refreshGUIMinimumAlignmentValue();
				}
			}
		});

		explicitAlignTextField.addTextEntryStatusListener(c -> provider.contextChanged());

		explicitAlignTextField.addActionListener(e -> adjustExplicitMinimumAlignmentValue());

		explicitAlignTextField.addFocusListener(new FocusListener() {
			@Override
			public void focusGained(FocusEvent e) {
				if (explicitAlignButton.isSelected()) {
					return;
				}
				explicitAlignButton.setSelected(true);
				chooseExplicitAlign();
			}

			@Override
			public void focusLost(FocusEvent e) {
				adjustExplicitMinimumAlignmentValue();
			}
		});

	}
Create the Info Panel that is horizontally resizable. The panel contains
the name, category, data type, size, and edit mode for the current
structure in the editor.

@return JPanel the completed composite data type information panel
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompEditorPanel.java