private void buildAdvancedOptionsComponents() {
		boolean singleStringMode = isSingleStringMode();
		excludeStringsWithCodecErrorCB = new GCheckBox("Exclude codec errors");
		excludeStringsWithCodecErrorCB.setSelected(!singleStringMode);
		excludeStringsWithCodecErrorCB.addItemListener(this::checkboxItemListener);
		excludeStringsWithCodecErrorCB.setToolTipText("""
				<html>Exclude strings that have charset codec errors.<br>
				(bytes/sequences that are invalid for the chosen charset)""");
		excludeStringsWithCodecErrorCB.getAccessibleContext()
				.setAccessibleName("Exclude Strings With Codec Error");

		codecErrorsCountLabel = new GDHtmlLabel();
		codecErrorsCountLabel.setForeground(GThemeDefaults.Colors.Messages.ERROR);
		codecErrorsCountLabel.setToolTipText("Number of strings excluded due to codec errors.");
		codecErrorsCountLabel.getAccessibleContext().setAccessibleName("Codec Errors Count");

		excludeStringsWithNonStdCtrlCharsCB = new GCheckBox("Exclude non-std ctrl chars");
		excludeStringsWithNonStdCtrlCharsCB.setSelected(!singleStringMode);
		excludeStringsWithNonStdCtrlCharsCB.setToolTipText("""
				<html>Exclude strings that contain non-standard control characters.<br>
				(ASCII 1..31, not including tab, CR, LF)""");
		excludeStringsWithNonStdCtrlCharsCB.addItemListener(this::checkboxItemListener);
		excludeStringsWithNonStdCtrlCharsCB.getAccessibleContext()
				.setAccessibleName("Exclude Strings with Non-Standard Control Characters");
		nonStdCtrlCharsErrorsCountLabel = new GDHtmlLabel();
		nonStdCtrlCharsErrorsCountLabel.setForeground(GThemeDefaults.Colors.Messages.ERROR);
		nonStdCtrlCharsErrorsCountLabel.setToolTipText(
			"Number of strings excluded due to non-standard control characters.");
		nonStdCtrlCharsErrorsCountLabel.getAccessibleContext()
				.setAccessibleName("Non-Standard Control Character Error Count");

		alignStartOfStringCB = new GCheckBox("Align start of string");
		alignStartOfStringCB.setToolTipText("""
				<html>If the chosen charset specifies a char size greater than 1, only look for<br>
				strings that begin on an aligned boundary.""");
		alignStartOfStringCB.setSelected(!singleStringMode);
		alignStartOfStringCB.addItemListener(this::checkboxItemListener);
		alignStartOfStringCB.getAccessibleContext().setAccessibleName("Align Start of String");
		breakOnRefCB = new GCheckBox("Truncate at ref");
		breakOnRefCB.setSelected(true);
		breakOnRefCB.addItemListener(this::checkboxItemListener);
		breakOnRefCB.setToolTipText("Truncate strings at references.");
		breakOnRefCB.getAccessibleContext().setAccessibleName("Break on References");
		minStringLengthSpinner = new IntegerSpinner(new SpinnerNumberModel( // spinner
			Long.valueOf(Math.min(5, selectedAddresses.getNumAddresses())), // initial 
			Long.valueOf(0), // min
			Long.valueOf(Math.min(99, selectedAddresses.getNumAddresses())), // max 
			Long.valueOf(1)), // inc
			3 /* columns */);
		minStringLengthSpinner.getSpinner()
				.setToolTipText(
					"Exclude strings that are shorter (in characters, not bytes) than this minimum");
		minStringLengthSpinner.getTextField().setShowNumberMode(false);
		minStringLengthSpinner.getSpinner().addChangeListener(e -> updateOptionsAndRefresh());
		minStringLengthSpinner.getSpinner()
				.getAccessibleContext()
				.setAccessibleName("Minimum String Length");
		minLenFailedCountLabel = new GDHtmlLabel();
		minLenFailedCountLabel.setForeground(GThemeDefaults.Colors.Messages.ERROR);
		minLenFailedCountLabel.setToolTipText("Number of strings excluded due to length.");
		minLenFailedCountLabel.getAccessibleContext()
				.setAccessibleName("Minimum Failed Length Count");
		stringModelFilenameComboBox = new GhidraComboBox<>();
		stringModelFilenameComboBox.setEditable(true);
		for (String builtinStringModelFilename : getBuiltinStringModelFilenames()) {
			stringModelFilenameComboBox.addToModel(builtinStringModelFilename);
		}

		stringModelFilenameComboBox
				.setText(getDefault(EncodedStringsPlugin.STRINGMODEL_FILENAME_OPTIONNAME,
					EncodedStringsPlugin.STRINGMODEL_FILENAME_DEFAULT));
		stringModelFilenameComboBox.addItemListener(itemListener);
		stringModelFilenameComboBox.setToolTipText("""
				<html>Select the name of a built-in string model,<br>
				or<br>
				Enter the full path to a user-supplied .sng model file,<br>
				or<br>
				Clear the field for no string model.""");
		stringModelFilenameComboBox.getAccessibleContext()
				.setAccessibleName("String Model Filename");
		requireValidStringCB = new GCheckBox("Exclude invalid strings");
		requireValidStringCB.setSelected(false);
		requireValidStringCB.setToolTipText("Verify strings against the string model.");
		requireValidStringCB.addItemListener(this::checkboxItemListener);
		requireValidStringCB.getAccessibleContext().setAccessibleName("Reguire Valid Sring");
		stringModelFailedCountLabel = new GDHtmlLabel();
		stringModelFailedCountLabel.setForeground(GThemeDefaults.Colors.Messages.ERROR);
		stringModelFailedCountLabel
				.setToolTipText("Number of strings excluded due to failing string model check.");
		stringModelFailedCountLabel.getAccessibleContext()
				.setAccessibleName("String Model Failed Count");
	}
For test/screen shot use

@return button
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/strings/EncodedStringsDialog.java