Pessoal, olhem a imagem abaixo.
como faço para inserir esse campo de pesquisa usando thymeleaf e bootstrap?
Pessoal, olhem a imagem abaixo.
como faço para inserir esse campo de pesquisa usando thymeleaf e bootstrap?
olá Cleriston_Lincoln , eu uso em um combox uma classe decorator que funiciona desta forma,
segue abaixo as classes
import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.Collection;
import java.util.Vector;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.UIManager;
import javax.swing.text.JTextComponent;
public class AutoCompleteComboBox extends JComboBox {
public AutoCompleteComboBox() {
super();
initialize(false);
}
public AutoCompleteComboBox(ComboBoxModel aModel) {
super(aModel);
initialize(false);
}
public AutoCompleteComboBox(Object... items) {
super(items);
initialize(false);
}
public AutoCompleteComboBox(Collection<?> items) {
super(new Vector<Object>(items));
initialize(false);
}
public AutoCompleteComboBox(boolean editable) {
super();
initialize(editable);
}
public AutoCompleteComboBox(ComboBoxModel aModel, boolean editable) {
super(aModel);
initialize(editable);
}
public AutoCompleteComboBox(Collection<?> items, boolean editable) {
super(new Vector<Object>(items));
initialize(editable);
}
private void initialize(boolean editable) {
setEditable(editable);
AutoCompleteDecoratorCombo.decorate(this);
final Color gray = getBackground();
final Color green = UIManager.getColor("ComboBox.selectionBackground");
// final Color selection = ((JTextComponent)
// getEditor().getEditorComponent()).getSelectionColor();
getEditor().getEditorComponent().setBackground(gray);
((JTextComponent) getEditor().getEditorComponent())
.setSelectionColor(gray);
((JTextComponent) getEditor().getEditorComponent())
.setCaretColor(Color.white);
((JTextComponent) getEditor().getEditorComponent())
.setForeground(((JTextComponent) getEditor()
.getEditorComponent()).getSelectedTextColor());
getEditor().getEditorComponent().addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
getEditor().getEditorComponent().setBackground(green);
((JTextComponent) getEditor().getEditorComponent())
.setSelectionColor(green);
}
public void focusLost(FocusEvent e) {
getEditor().getEditorComponent().setBackground(gray);
((JTextComponent) getEditor().getEditorComponent())
.setSelectionColor(gray);
}
});
}
@Override
public void setEnabled(boolean b) {
super.setEnabled(b);
getEditor().getEditorComponent().setBackground(getBackground());
}
}
outra classe :
import java.awt.event.ActionEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.ComboBoxEditor;
import javax.swing.InputMap;
import javax.swing.JComboBox;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.JTextComponent;
import javax.swing.text.TextAction;
import org.jdesktop.swingx.autocomplete.AbstractAutoCompleteAdaptor;
import org.jdesktop.swingx.autocomplete.AutoCompleteComboBoxEditor;
import org.jdesktop.swingx.autocomplete.AutoCompleteDocument;
import org.jdesktop.swingx.autocomplete.ComboBoxAdaptor;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
import org.jdesktop.swingx.autocomplete.workarounds.AquaLnFPopupLocationFix;
public class AutoCompleteDecoratorCombo {
public static void decorate(final JComboBox comboBox) {
decorate(comboBox, ObjectToStringConverter.DEFAULT_IMPLEMENTATION);
}
public static void decorate(final JComboBox comboBox,
final ObjectToStringConverter stringConverter) {
boolean strictMatching = !comboBox.isEditable();
comboBox.setEditable(true);
AquaLnFPopupLocationFix.install(comboBox);
JTextComponent editorComponent = (JTextComponent) comboBox.getEditor()
.getEditorComponent();
final AbstractAutoCompleteAdaptor adaptor = new ComboBoxAdaptor(
comboBox);
final AutoCompleteDocument document = new AutoCompleteDocument(adaptor,
strictMatching, stringConverter);
decorate(editorComponent, document, adaptor);
final KeyListener keyListener = new KeyAdapter() {
@Override
public void keyPressed(KeyEvent keyEvent) {
// don't popup on action keys (cursor movements, etc...)
if (keyEvent.isActionKey())
return;
// don't popup if the combobox isn't visible anyway
if (comboBox.isDisplayable() && !comboBox.isPopupVisible()) {
int keyCode = keyEvent.getKeyCode();
// don't popup when the user hits shift,ctrl or alt
if (keyCode == KeyEvent.VK_SHIFT
|| keyCode == KeyEvent.VK_CONTROL
|| keyCode == KeyEvent.VK_ALT)
return;
// don't popup when the user hits escape (see issue #311)
if (keyCode == KeyEvent.VK_ESCAPE
|| keyCode == KeyEvent.VK_ENTER)
return;
if (keyEvent.isAltDown() || keyEvent.isControlDown())
return;
comboBox.setPopupVisible(true);
}
}
};
editorComponent.addKeyListener(keyListener);
if (stringConverter != ObjectToStringConverter.DEFAULT_IMPLEMENTATION) {
comboBox.setEditor(new AutoCompleteComboBoxEditor(comboBox
.getEditor(), stringConverter));
}
comboBox.addPropertyChangeListener("editor",
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
ComboBoxEditor editor = (ComboBoxEditor) e
.getNewValue();
if (editor != null
&& editor.getEditorComponent() != null) {
if (!(editor instanceof AutoCompleteComboBoxEditor)
&& stringConverter != ObjectToStringConverter.DEFAULT_IMPLEMENTATION) {
comboBox.setEditor(new AutoCompleteComboBoxEditor(
editor, stringConverter));
} else {
decorate((JTextComponent) editor
.getEditorComponent(), document,
adaptor);
editor.getEditorComponent().addKeyListener(
keyListener);
}
}
}
});
}
public static void decorate(JTextComponent textComponent,
AutoCompleteDocument document,
final AbstractAutoCompleteAdaptor adaptor) {
textComponent.setDocument(document);
textComponent.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
adaptor.markEntireText();
}
});
InputMap editorInputMap = textComponent.getInputMap();
if (document.isStrictMatching()) {
// move the selection to the left on VK_BACK_SPACE
editorInputMap.put(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_BACK_SPACE, 0),
DefaultEditorKit.selectionBackwardAction);
// ignore VK_DELETE and CTRL+VK_X and beep instead when strict
// matching
editorInputMap.put(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_DELETE, 0), errorFeedbackAction);
editorInputMap.put(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_X,
java.awt.event.InputEvent.CTRL_DOWN_MASK),
errorFeedbackAction);
} else {
ActionMap editorActionMap = textComponent.getActionMap();
editorInputMap.put(KeyStroke.getKeyStroke(
java.awt.event.KeyEvent.VK_BACK_SPACE, 0),
"nonstrict-backspace");
editorActionMap
.put("nonstrict-backspace",
new NonStrictBackspaceAction(
editorActionMap
.get(DefaultEditorKit.deletePrevCharAction),
editorActionMap
.get(DefaultEditorKit.selectionBackwardAction),
adaptor));
}
}
static class NonStrictBackspaceAction extends TextAction {
Action backspace;
Action selectionBackward;
AbstractAutoCompleteAdaptor adaptor;
public NonStrictBackspaceAction(Action backspace,
Action selectionBackward, AbstractAutoCompleteAdaptor adaptor) {
super("nonstrict-backspace");
this.backspace = backspace;
this.selectionBackward = selectionBackward;
this.adaptor = adaptor;
}
public void actionPerformed(ActionEvent e) {
if (adaptor.listContainsSelectedItem()) {
selectionBackward.actionPerformed(e);
} else {
backspace.actionPerformed(e);
}
}
}
static Object errorFeedbackAction = new TextAction("provide-error-feedback") {
public void actionPerformed(ActionEvent e) {
UIManager.getLookAndFeel()
.provideErrorFeedback(getTextComponent(e));
}
};
}
e uso desta forma
public void carregarComboComListaDeCadastros() {
AutoCompleteDecoratorCombo.decorate(getComboClientes());
DefaultComboBoxModel model = (DefaultComboBoxModel) getComboClientes()
.getModel();
model.removeAllElements();
List<Cliente> listaCliente = getListaDeCadastros();
for (int i = 0; i < listaCliente.size(); i++) {
model.addElement(ordenarLista(listaCliente, "nome").get(i)
.getNome());
}
getComboClientes().setModel(model);
}
no meu caso trago do banco de dados uma lista e carrego no combobox o nome !
no momento da pesquisa conforme vou digitando ele já vai me trazendo o
resultado conforme a pesquisa.
testa ai, qq coisa me fala.
opa, vlw.
No caso vc esta usando swing. vou ver se a logica aplica-se a web.
ops… verdade… não me atentei nisso…
Para futuras pesquisas.
deem uma pesquisada no google: select2 e chosen.
não consegui rodar o chosen já o select2 ficou otimo.